Copia la chiave ssh su un'altra macchina in modo da poter usare GitHub lì?


12

Ho un server remoto. Posso già ssh con successo su quel server remoto - la mia chiave è authorized_keyssul server remoto.

Ora voglio estrarre da GitHub direttamente su quel server remoto. Ma sto ricevendo permission denied (publickey)quando provo ssh -T git@github.comsul server remoto.

Devo copiare id_rsa.pubdirettamente dal mio computer locale sul server remoto o è pericoloso?

Se questa è la risposta, qual è il modo migliore per farlo?

O dovrei generare una nuova chiave pubblica sul server remoto e aggiungerla al mio acithunt github?

AGGIORNARE:

Ecco l'output di un ssh dettagliato:

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
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: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

Ho appena provato a configurare l'inoltro dell'agente ssh, usando l'indirizzo IP del mio server: developer.github.com/guides/using-ssh-agent-forwarding Ma sto ancora salendo Permission denied (publickey)sul computer remoto.
Richard,

1
c'è un'opzione dettagliata sul comando ssh, penso che potrebbe dirti quali file chiave sta effettivamente provando, mi ha aiutato alcune volte.
Allman,

Risposte:


4

il id_rsa.pubpuò essere copiato ovunque senza alcun pericolo reale ad esso. Questa è la tua chiave pubblica ed è pensata per cose come questa. È la metà di una coppia di chiavi e condividerla con i luoghi a cui si desidera accedere è il modo in cui si consente alla chiave privata di funzionare.

Per consentire l'accesso remoto, la chiave pubblica deve essere elencata in authorized_keys( authorized_keys2su alcuni sistemi). Una chiave su ogni riga, in questo formato:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

Per raggiungere questo obiettivo, una volta copiato, basta aggiungerlo al authorized_keysfile in questo modo:cat id_rsa.pub >> ~/.ssh/authorized_keys

La maggior parte dei sistemi sani si rifiuteranno codardamente di consentire all'utente di utilizzare l'accesso basato su chiave se la .sshcartella dispone di autorizzazioni troppo lente. La cartella dovrebbe essere 700, quindi se hai ancora problemi:chmod 700 ~/.ssh

Inoltre, i file nella .sshcartella dovrebbero essere 600:chmod 600 ~/.ssh


Modifica 1:

Il file stesso id_rsa.pubnon è richiesto sul server remoto. Solo i contenuti, come parte di authorized_keys. Ti consiglio di correre ssh -vT git@github.comper abilitare la registrazione dettagliata, in modo da poter vedere esattamente quali autorizzazioni si lamenta.

Modifica 2:

Ciò significa che nessuna delle chiavi offerte corrisponde a ciò che il server remoto ha in archivio. Quello che vuoi vedere è qualcosa del genere:

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

Cose da controllare:

  • Assicurarsi che una delle chiavi private sia quella corrispondente alla chiave pubblica aggiunta al telecomando authorized_keys
  • Assicurati che la chiave corrisponda al nome utente con cui stai tentando di accedere (dovrebbe essere l'ultima parte della chiave pubblica)
  • Prova a rinominare authorized_keysinauthorized_keys2

Grazie. La mia chiave pubblica è elencata ~/.ssh/authorized_keyssul server remoto - l'ho aggiunta usando cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys". Poi sshed al telecomando e corse ~$ chmod 700 ~/.ssh e $ chmod 600 ~/.ssh/authorized_keysma ancora ottenere Permission denied (publickey)quando provo a ssh a github. Devo copiare l'intero id_rsa.pubfile anche sul computer remoto?
Richard,

@Richard Non è necessario il file stesso lì, no. Anche se mi piace tenerlo nella cartella .ssh per ogni evenienza. Ma non è richiesto, è solo qualcosa che faccio. Consiglierei di eseguire il sshcomando descritto nella tua domanda con l' -vopzione per vedere esattamente quali autorizzazioni ssh si sta lamentando.
Jarmund,

Grazie per la modifica 2. Non sono sicuro di come fare il primo punto elenco - check that one of the private keys...- cosa devo fare qui?
Richard,

Al punto 2, vuoi dire che la chiave deve corrispondere al mio nome utente GitHub? Non sembra niente del genere :)
Richard,

Il fatto è che posso usare la stessa chiave pubblica per ssh e estrarre da GitHub dal mio computer locale, quindi GitHub deve pensare che vada bene ...?
Richard,

2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

Secondo la traccia di debug, nessuno di questi file di chiavi esiste effettivamente sul sistema locale e ssh non ha effettivamente offerto alcuna chiave al server remoto. Assicurarsi che la chiave che si desidera utilizzare esista effettivamente sull'host su cui si sta eseguendo ssh e che il file abbia il nome giusto. Se si desidera utilizzare un file chiave diverso da uno dei file predefiniti, è necessario specificarlo nella riga di comando ssh:

ssh -i /path/to/some_key -Tv git@github.com

Il file chiave non esiste sul server remoto da cui sto provando a ssh su github, ma è presente authorized_keys. È abbastanza o devo copiare anche il file chiave lì?
Richard,

1
authorized_keysè per le chiavi pubbliche che verranno accettate per le connessioni in entrata . È necessaria una copia del file della chiave privata per stabilire una connessione in uscita con un altro host. Quindi sì, uno di quei file chiave (id_rsa, ecc.) Deve essere presente sull'host su cui stai eseguendo ssh.
Kenster,

La bandiera -i mi ha aiutato a risolvere un problema! Ho copiato la cartella ssh su un altro computer e stavo cercando di usare git remoto, ma sono stato rifiutato. L'ho salvato la giornata!
pauljohn32,

2

Il server ha bisogno della tua chiave privata per autenticarti su Github. La tua chiave pubblica, come suggerisce il nome, è considerata pubblica, quindi non può essere sufficiente per l'autenticazione.

Se non è necessario utilizzare Github sul server remoto senza essersi connessi tramite ssh, è necessario utilizzare l'inoltro di ssh-agent. Una guida per questo è disponibile su Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .

Altrimenti, dovresti generare una nuova chiave e collegarla al tuo account.


0

Puoi inserire direttamente il comando.

$ cat ~ / .ssh / id_rsa.pub

se hai già un tasto SSH presente, lo mostrerà. Altrimenti dà errore. Devi aggiungere una nuova chiave.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.