En nuestros artículos anteriores, discutimos cómo configurar la autenticación basada en clave ssh para realizar ssh y scp sin contraseña bajo el siguientes tres escenarios:
- OpenSSH a OpenSSH
- Abrir SSH a SSH2
- SSH2 a SSH2
En este artículo, explicaré cómo realizar ssh y scp desde SSH2 (host local) a OpenSSH (host remoto) sin contraseña.
1. Identificar la versión de SSH del host local y del host remoto
En este ejemplo, el host local ejecuta SSH2 y el host remoto ejecuta 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. Genere un par de claves de autenticación SSH2 en el host local mediante ssh-keygen2
En SSH2, ssh-keygen será un enlace suave a ssh-keygen2 como se muestra a continuación.
[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 clave pública y la clave privada se almacenan en la carpeta .ssh2 en su directorio de inicio. En este ejemplo, se encuentra en /home/jsmith/.ssh2.
No debe compartir la clave privada con nadie.
Por defecto ssh-keygen2 genera un par de claves DSA (Digital Signature Algorithm). También puede generar un par de claves RSA como se muestra a continuación.
[local-host]$ ssh-keygen -t rsa
3. Copie la clave pública SSH2 del host local al host remoto que ejecuta OpenSSH
Copie el archivo local-host:/home/jsmith/.ssh2/id_dsa_2048_a.pub en remote-host:/home/jsmith/.ssh/id_dsa_1024_a.pub. Realice un vi /home/jsmith/.ssh/id_dsa_1024_b.pub en el host remoto y copie el contenido de la clave pública del host local.
[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. En el host local, cree el archivo ~/.ssh2/identification
Cree el siguiente archivo en el host local.
$ vim ~/.ssh2/identification IdKey id_dsa_2048_a
5. En el host remoto, convierta la clave pública SSH2 en clave pública OpenSSH
Esto debe ejecutarse en el host remoto que ejecuta OpenSSH. Solo OpenSSH puede convertir claves entre OpenSSH y formato SSH2.
[remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \ ~/.ssh/id_dsa_1024_a_openssh.pub
Copie la clave pública OpenSSH convertida desde el archivo ~/.ssh/id_dsa_1024_a_openssh.pub al archivo authorized_keys como se muestra a continuación.
[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. Configure el permiso adecuado en el host remoto para el directorio .ssh
En el host remoto que ejecuta openSSH, asegúrese de configurar el siguiente permiso. Sin esto, tendrá todo tipo de problemas extraños con ssh.
$ chmod 755 ~ $ chmod 755 ~/.ssh $ chmod 644 ~/.ssh/authorized_keys
7. Inicie sesión desde el host local al host remoto utilizando la autenticación de clave SSH
Realice ssh desde el host local (SSH2) al host remoto (OpenSSH) como se muestra a continuación para verificar si la autenticación basada en clave funciona correctamente.
[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 :Si obtiene el siguiente error mientras realiza el ssh o scp desde el host local al host remoto, consulte Cómo resolver el problema de negociación del algoritmo fallido en SSH, para solucionar este problema.
[local-host]$ ssh -l jsmith remote-host warning: Authentication failed. Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.)
Hay dos formas de realizar ssh y scp sin ingresar la contraseña:
- Sin frase de contraseña: Al crear un par de claves, deje la frase de contraseña vacía. Utilice esta opción para el procesamiento por lotes automatizado. por ej. si está ejecutando un trabajo cron para copiar archivos entre máquinas, esta es una opción adecuada. Puede omitir los siguientes pasos para este método.
- Usar frase de contraseña y agente SSH :si está utilizando ssh y scp de forma interactiva desde la línea de comandos y no desea utilizar la contraseña cada vez que ejecuta ssh o scp, no le recomiendo la opción anterior (sin frase de contraseña), ya que ha eliminado una nivel de seguridad en la autenticación basada en clave ssh. En su lugar, use la frase de contraseña mientras crea el par de claves y use SSH Agent para realizar ssh y scp sin tener que ingresar la contraseña cada vez, como se explica en los pasos a continuación.
8. Inicie el agente SSH en el host local
El Agente SSH se ejecutará en segundo plano para mantener las claves privadas y ejecutar ssh y scp sin tener que ingresar la frase de contraseña varias veces.
[local-host]$ ssh-agent $SHELL
9. Cargue la clave privada en el agente SSH en el host local
[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. Realice SSH o SCP desde el host local hasta el hogar remoto sin ingresar la contraseña
[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]
Si te ha gustado este artículo, compártelo en delicious and Stumble it .