Nei nostri articoli precedenti, abbiamo discusso di come impostare l'autenticazione basata su chiave ssh per eseguire ssh e scp senza password sotto il seguenti tre scenari:
- Da OpenSSH a OpenSSH
- Apri da SSH a SSH2 da
- SSH2 a SSH2
In questo articolo spiegherò come eseguire ssh e scp da SSH2 (host locale) a OpenSSH (host remoto) senza password.
1. Identifica la versione SSH dell'host locale e dell'host remoto
In questo esempio, l'host locale esegue SSH2 e l'host remoto esegue OpenSSH.
[local-host]$ ssh -V ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu [remote-host]$ ssh -V OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
2. Genera una coppia di chiavi di autenticazione SSH2 sull'host locale utilizzando ssh-keygen2
Su SSH2, ssh-keygen sarà un collegamento software a ssh-keygen2 come mostrato di seguito.
[local-host]$ ls -l /usr/local/bin/ssh-keygen lrwxrwxrwx 1 root root 11 Jul 31 2006 /usr/local/bin/ssh-keygen -> ssh-keygen2 [local-host]$ ssh-keygen Generating 2048-bit dsa key pair 7 o.oOo..oOo.o Key generated. 2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700 Passphrase : [Enter the password here] Again : Private key saved to /home/jsmith/.ssh2/id_dsa_2048_a Public key saved to /home/jsmith/.ssh2/id_dsa_2048_a.pub
La chiave pubblica e la chiave privata sono archiviate nella cartella .ssh2 nella directory home. In questo esempio, è in /home/jsmith/.ssh2.
Non condividere la chiave privata con nessuno.
Per impostazione predefinita ssh-keygen2 genera la coppia di chiavi DSA (Digital Signature Algorithm). Puoi anche generare una coppia di chiavi RSA come mostrato di seguito.
[local-host]$ ssh-keygen -t rsa
3. Copia la chiave pubblica SSH2 dall'host locale all'host remoto che esegue OpenSSH
Copia il file host locale:/home/jsmith/.ssh2/id_dsa_2048_a.pub in host remoto:/home/jsmith/.ssh/id_dsa_1024_a.pub. Eseguire un vi /home/jsmith/.ssh/id_dsa_1024_b.pub sull'host remoto e copiare il contenuto della chiave pubblica dall'host locale.
[remote-host]$ vi /home/jsmith/.ssh/id_dsa_1024_a.pub ---- BEGIN SSH2 PUBLIC KEY ---- Subject: jsmith Comment: "2048-bit dsa, jsmith@local-host Sun Oct 19 2008 14:49:42 -070\0" 7ZTVd7H63VyVqBIqfmEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFDG0VQESj 5iGSvMtmBBj8wQxGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpghC97mIx tIxJA7ZTVd7H63VIqmzlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8COWQs t6jsP6RG/WrpHi5iGSvMtmBBj8wQGHddexkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnfLL7T RTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcdXFY 2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQci dko1pKuV1W9rOK3y19A2J2N6rSdWYb7Zyzw8Gr7kTMWX1TP5WhRGCUhNRYnjI+4wgZIZdC lfGdp8MGI3HBg9CAr702BOzRTMnW0aqsGjrbhcwhWaDgRymhBh++nGAhHxeWn4ApJ8F6kT 8HaAm3dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGi PQTrt9NAzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA== ---- END SSH2 PUBLIC KEY ----
4. Sull'host locale, crea il file ~/.ssh2/identification
Crea il seguente file sull'host locale.
$ vim ~/.ssh2/identification IdKey id_dsa_2048_a
5. Sull'host remoto, converti la chiave pubblica SSH2 nella chiave pubblica OpenSSH
Questo dovrebbe essere eseguito sull'host remoto che esegue OpenSSH. Solo OpenSSH può convertire le chiavi avanti e indietro tra il formato OpenSSH e SSH2.
[remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \ ~/.ssh/id_dsa_1024_a_openssh.pub
Copia la chiave pubblica OpenSSH convertita dal file ~/.ssh/id_dsa_1024_a_openssh.pub nel file authorized_keys come mostrato di seguito.
[remote-host]$ vi ~/.ssh/authorized_keys ssh-dss 5iGSvMtmBBj8wQdegAEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFD G0VQESjq+YlVTWcXxStz0xGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpgh C97s143S8zBcTAGtdegte3IqmlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8 COWQst6jsP6RG/WrpHiI4QVDM6tZVZ4CnGjm1QPkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnf LL7TRTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcd XFY2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQ dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGiPQTrt9N AzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==
6. Imposta l'autorizzazione appropriata sull'host remoto nella directory .ssh
Sull'host remoto che esegue openSSH, assicurati di configurare la seguente autorizzazione. Senza questo, avrai tutti i tipi di strani problemi con ssh.
$ chmod 755 ~ $ chmod 755 ~/.ssh $ chmod 644 ~/.ssh/authorized_keys
7. Accedi dall'host locale all'host remoto utilizzando l'autenticazione con chiave SSH
Esegui ssh da host locale (SSH2) a host remoto (OpenSSH) come mostrato di seguito per verificare se l'autenticazione basata su chiave funziona correttamente.
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Host key not found from database. Key fingerprint: bitaz-navun-gogus-mptop-ljilk-qwlem-ftrtm-llmak-topok-zuiof-bnmix You can get a public key's fingerprint by running % ssh-keygen -F publickey.pub on the keyfile. Are you sure you want to continue connecting (yes/no)? yes Host key saved to /home/jsmith/.ssh2/hostkeys/key_22_remote-host.pub host key for remote-host, accepted by jsmith Sun Oct 19 2008 15:06:42 -0700 Passphrase for key "/home/jsmith/.ssh2/id_dsa_2048_a" with comment "2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700":[Enter password] Last login: Sun Oct 19 14:01:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
Nota :se viene visualizzato il seguente errore durante l'esecuzione di ssh o scp da host locale a host remoto, fare riferimento a Come risolvere il problema relativo alla negoziazione dell'algoritmo non riuscito su SSH per risolvere questo problema.
[local-host]$ ssh -l jsmith remote-host warning: Authentication failed. Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.)
Ci sono due modi per eseguire ssh e scp senza inserire la password:
- Nessuna passphrase: Durante la creazione di una coppia di chiavi, lasciare vuota la passphrase. Utilizzare questa opzione per l'elaborazione batch automatizzata. per es. se stai eseguendo un lavoro cron per copiare file tra macchine questa è un'opzione adatta. Puoi saltare i passaggi successivi per questo metodo.
- Utilizza passphrase e agente SSH :Se stai usando ssh e scp in modo interattivo dalla riga di comando e non vuoi usare la password ogni volta che esegui ssh o scp, non consiglio l'opzione precedente (nessuna passphrase), poiché ne hai eliminata una livello di sicurezza nell'autenticazione basata su chiave ssh. Invece, usa la passphrase durante la creazione della coppia di chiavi e usa SSH Agent per eseguire ssh e scp senza dover inserire la password ogni volta come spiegato nei passaggi seguenti.
8. Avvia l'agente SSH sull'host locale
L'agente SSH verrà eseguito in background per conservare le chiavi private ed eseguire ssh e scp senza dover inserire più volte la passphrase.
[local-host]$ ssh-agent $SHELL
9. Carica la chiave privata nell'agente SSH sull'host locale
[local-host]$ ssh-add Adding identity: /home/jsmith/.ssh2/id_dsa_2048_a.pub Need passphrase for /home/jsmith/.ssh2/id_dsa_2048_a (2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700). Enter passphrase:[Enter your passphrase here]
10. Esegui SSH o SCP dall'host locale alla casa remota senza inserire la password
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Last login: Sun Oct 19 14:20:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
Se ti è piaciuto questo articolo, condividilo su delicious and Stumble it .