Puoi accedere a un server Linux remoto senza inserire la password in 3 semplici passaggi usando ssky-keygen e ssh-copy -id come spiegato in questo articolo.
ssh-keygen crea le chiavi pubbliche e private. ssh-copy-id copia la chiave pubblica dell'host locale nel file authorized_keys dell'host remoto. ssh-copy-id assegna anche le autorizzazioni appropriate alla home dell'host remoto, ~/.ssh e ~/.ssh/authorized_keys.
Questo articolo spiega anche 3 piccoli fastidi nell'uso di ssh-copy-id e come usare ssh-copy-id insieme a ssh-agent.
Passaggio 1:crea chiavi pubbliche e private utilizzando ssh-key-gen su local-host
jsmith@local-host$ [Note: You are on local-host here] jsmith@local-host$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key] Enter passphrase (empty for no passphrase): [Press enter key] Enter same passphrase again: [Pess enter key] Your identification has been saved in /home/jsmith/.ssh/id_rsa. Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub. The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host
Passaggio 2:copia la chiave pubblica sull'host remoto utilizzando ssh-copy-id
jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host jsmith@remote-host's password: Now try logging into the machine, with "ssh 'remote-host'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
Nota: ssh-copy-id aggiunge le chiavi del file .ssh/authorized_key dell'host remoto.
Fase 3:accedi all'host remoto senza inserire la password
jsmith@local-host$ ssh remote-host Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2 [Note: SSH did not ask for password.] jsmith@remote-host$ [Note: You are on remote-host here]
I 3 semplici passaggi precedenti dovrebbero portare a termine il lavoro nella maggior parte dei casi.
Abbiamo anche discusso in precedenza in dettaglio sull'esecuzione di SSH e SCP da openSSH a openSSH senza inserire la password.
Se stai utilizzando SSH2, abbiamo discusso in precedenza sull'esecuzione di SSH e SCP senza password da SSH2 a SSH2 , da OpenSSH a SSH2 e da SSH2 a OpenSSH.
Utilizzo di ssh-copy-id insieme a ssh-add/ssh-agent
Quando non viene passato alcun valore per l'opzione -i e If ~/.ssh/identity.pub non è disponibile, ssh-copy-id visualizzerà il seguente messaggio di errore.
jsmith@local-host$ ssh-copy-id -i remote-host /usr/bin/ssh-copy-id: ERROR: No identities found
Se hai caricato le chiavi nell'ssh-agent utilizzando ssh-add , quindi ssh-copy-id otterrà le chiavi dall'ssh-agent per copiare sull'host remoto. ovvero copia le chiavi fornite da ssh-add -L comando all'host remoto, quando non si passa l'opzione -i all'ssh-copy-id .
jsmith@local-host$ ssh-agent $SHELL jsmith@local-host$ ssh-add -L The agent has no identities. jsmith@local-host$ ssh-add Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa) jsmith@local-host$ ssh-add -L ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jsmith/.ssh/id_rsa jsmith@local-host$ ssh-copy-id -i remote-host jsmith@remote-host's password: Now try logging into the machine, with "ssh 'remote-host'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [Note: This has added the key displayed by ssh-add -L]
Tre piccoli fastidi di ssh-copy-id
Di seguito sono riportati alcuni piccoli fastidi di ssh-copy-id.
- Chiave pubblica predefinita: ssh-copy-id usa ~/.ssh/identity.pub come file di chiave pubblica predefinito (cioè quando nessun valore viene passato a option -i ). Invece, vorrei che usasse id_dsa.pub, o id_rsa.pub o identity.pub come chiavi predefinite. cioè se qualcuno di loro esiste, dovrebbe copiarlo sull'host remoto. Se ne esistono due o tre, dovrebbe copiare identity.pub come predefinito.
- L'agente non ha identità: Quando l'agente ssh è in esecuzione e ssh-add -L restituisce "L'agente non ha identità" (cioè nessuna chiave viene aggiunta all'agente ssh), ssh-copy-id copierà comunque il messaggio "L'agente non ha identità" nella voce authorized_keys dell'host remoto.
- Voce duplicata in authorized_keys: Vorrei che ssh-copy-id convalidi la voce duplicata sulle chiavi_autorizzate dell'host remoto. Se esegui ssh-copy-id più volte sull'host locale, continuerà ad aggiungere la stessa chiave al file authorized_keys dell'host remoto senza verificare la presenza di duplicati. Anche con voci duplicate, tutto funziona come previsto. Ma vorrei che il mio file authorized_keys fosse libero da disordine.
Se ti piace questo articolo, aggiungilo ai segnalibri su Delicious e Inciampalo .