2011-11-01 4 views
34

Ok, io sono confuso su una cosa ... io sono in grado di impegnarsi per il mio repository github bene, ma quando provo a fare un cap deploy dalla mia cartella locale al mio server di gestione temporanea ottengo Permission denied (publickey).Perché viene distribuito un cap che concede l'autorizzazione negata (chiave pubblica)?

Se io eseguire ssh [email protected] In realtà ottengo un errore PTY allocation request failed on channel 0

Quindi qualcosa qui è sbagliato.

Se corro ssh -vT [email protected] ottengo:

OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011 
debug1: Reading configuration data /Users/myuser/.ssh/config 
debug1: Reading configuration data /etc/ssh_config 
debug1: Applying options for * 
debug1: Connecting to github.com [207.97.227.239] port 22. 
debug1: Connection established. 
debug1: identity file /Users/myuser/.ssh/id_rsa type 1 
debug1: identity file /Users/myuser/.ssh/id_rsa-cert type -1 
debug1: identity file /Users/myuser/.ssh/id_dsa type -1 
debug1: identity file /Users/myuser/.ssh/id_dsa-cert type -1 
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5github2 
debug1: match: OpenSSH_5.1p1 Debian-5github2 pat OpenSSH* 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_5.6 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr hmac-md5 none 
debug1: kex: client->server aes128-ctr hmac-md5 none 
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent 
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP 
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent 
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY 
debug1: Host 'github.com' is known and matches the RSA host key. 
debug1: Found key in /Users/myuser/.ssh/known_hosts:2 
debug1: ssh_rsa_verify: signature correct 
debug1: SSH2_MSG_NEWKEYS sent 
debug1: expecting SSH2_MSG_NEWKEYS 
debug1: SSH2_MSG_NEWKEYS received 
debug1: Roaming not allowed by server 
debug1: SSH2_MSG_SERVICE_REQUEST sent 
debug1: SSH2_MSG_SERVICE_ACCEPT received 
debug1: Authentications that can continue: publickey 
debug1: Next authentication method: publickey 
debug1: Offering RSA public key: /Users/myuser/.ssh/github_rsa 
debug1: Remote: Forced command: gerve technomad 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Server accepts key: pkalg ssh-rsa blen 279 
debug1: Remote: Forced command: gerve technomad 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Authentication succeeded (publickey). 
Authenticated to github.com ([207.97.227.239]:22). 
debug1: channel 0: new [client-session] 
debug1: Requesting [email protected] 
debug1: Entering interactive session. 
debug1: Sending environment. 
debug1: Sending env LANG = en_US.UTF-8 
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0 
Hi technomad! You've successfully authenticated, but GitHub does not provide shell access. 
debug1: channel 0: free: client-session, nchannels 1 
Transferred: sent 2384, received 2888 bytes, in 0.1 seconds 
Bytes per second: sent 42630.8, received 51643.3 
debug1: Exit status 1 

mie chiavi sono nella cartella ~/.ssh, in modo da che cosa è il problema, e perché io sono in grado di impegnarsi per il repository se v'è una questione chiave ??

UPDATE: Ho notato qualcosa quando sono entrato nella mia cartella .ssh. C'è una nuova coppia di chiavi che è stata creata quando ho installato Github per Mac ... perché non poteva semplicemente usare la mia coppia di chiavi esistente che non conosco.

risposta

17

Accertarsi che il server di staging abbia accesso ssh a github. Eseguire lo stesso comando "ssh -vT [email protected]" tramite un terminale sul server di staging; questo aiuterà a determinare se si tratta di un problema ssh sulla macchina remota.

+0

che ha funzionato grazie :), stavo trascurando quella parte. Ma ancora non so perché "ssh [email protected]" sta tornando "Richiesta allocazione PTY fallita sul canale 0"? – GiH

+0

È possibile eseguire l'ssh su altri server senza la creazione di tale problema? –

+0

sì, quando ssh nel mio server funziona bene, è solo "ssh [email protected]", in realtà se faccio "ssh -T [email protected]" funziona anche bene ... quindi perché non funziona senza l'opzione -T? Potrebbe essere un problema con il leone di Mac OSX? – GiH

2

Ho incontrato lo stesso problema dopo aver installato GitHub per Mac OS X. L'applicazione ha creato una nuova chiave privata ssh in ~/.ssh/github_rsa e l'ha aggiunta all'agente di autenticazione ssh.

Controllare quale tasto l'agente di autenticazione SSH è in cache:

$ ssh-add -l 
2048 63:0c:a6:51:63:c1:35:76:5d:02:77:97:39:48:0e:4a /Users/jiangxin/.ssh/github_rsa (RSA) 

Ogni volta che ci si connette a un altro github.com o servizi ssh, questo tasto viene utilizzato per primo.

Cancella le chiavi memorizzate nella cache da ssh-agent utilizzando questo comando:

$ ssh-add -D 

Ora il client ssh dovrebbe funzionare normalmente, utilizzando la chiave definita in ~/.ssh/config o ~/.ssh/id_rsa.

95

ho dovuto fare quanto segue:

$ ssh-add -D #remove existing identities 
    $ ssh-agent #copy the lines & run them 
    $ ssh-add  #uses the output from above 
+3

Esegui questi comandi sul computer locale – Hossein

+1

Questa è la risposta esatta al problema. Non c'è bisogno di aggiungere la chiave ssh sul tuo palcoscenico. Basta eseguire il comando sopra e fatto ... Grazie @olore –

+13

Ma qual è la ragione dietro a questo, e cosa ha fatto questo comando per risolvere questo? –

0

L'errore è dovuto al fatto, ssh-add non sa come parlare con l'agente di autenticazione. Il problema può essere risolto impostando la variabile di ambiente SSH_AUTH_SOCK.

Se si esegue ssh-agent si dovrebbe ottenere un output simile a questo:

SSH_AUTH_SOCK=/tmp/ssh-agVZL13989/agent.13989; export SSH_AUTH_SOCK; 
SSH_AGENT_PID=13990; export SSH_AGENT_PID; 
echo Agent pid 13990;SSH_AUTH_SOCK=/tmp/ssh-agVZL13989/agent.13989; export SSH_AUTH_SOCK; 
SSH_AGENT_PID=13990; export SSH_AGENT_PID; 
echo Agent pid 13990; 

eseguire questo:

eval $(ssh-agent) 

E poi:

ssh-add -D 
+0

Caro Sankalp, la tua risposta è molto breve e dovrei fornire alcune informazioni aggiuntive per evitare che venga cancellata (è già stata contrassegnata per la cancellazione da un altro utente) – furins

+1

Grazie a @furins .. Scriverò alcune informazioni. –

+0

perché 'ssh-add -D'? Questo cancellerà le tue identità. Non pensare che aiuterà a risolvere il problema. –

20

ottengo questo errore a volte e digito semplicemente $ ssh-add -k per aggiungere la mia identità e poi funziona. Non sai esattamente perché funzioni o perché il messaggio di errore non lo suggerisca, ma arriva sempre in soccorso!

1

Se si utilizza MAC. Forse la tua chiave ssh non è stata aggiunta all'agent di autenticazione. Seguente comando lo farà

ssh-add path_to_private_key 

ad esempio

ssh-add ~/.ssh/id_rsa 
Problemi correlati