Puede iniciar sesión en un servidor Linux remoto sin ingresar la contraseña en 3 simples pasos usando ssky-keygen y ssh-copy -id como se explica en este artículo.
ssh-keygen crea las claves pública y privada. ssh-copy-id copia la clave pública del host local en el archivo authorized_keys del host remoto. ssh-copy-id también asigna el permiso adecuado a la casa del host remoto, ~/.ssh y ~/.ssh/authorized_keys.
Este artículo también explica 3 molestias menores del uso de ssh-copy-id y cómo usar ssh-copy-id junto con ssh-agent.
Paso 1:Cree claves públicas y privadas usando ssh-key-gen en el host local
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
Paso 2:Copie la clave pública en el host remoto usando 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.
Paso 3:Inicie sesión en el host remoto sin ingresar la contraseña
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]
Los 3 sencillos pasos anteriores deberían hacer el trabajo en la mayoría de los casos.
Anteriormente también discutimos en detalle cómo realizar SSH y SCP de openSSH a openSSH sin ingresar la contraseña.
Si está utilizando SSH2, discutimos anteriormente sobre cómo realizar SSH y SCP sin contraseña de SSH2 a SSH2, de OpenSSH a SSH2 y de SSH2 a OpenSSH.
Uso de ssh-copy-id junto con ssh-add/ssh-agent
Cuando no se pasa ningún valor para la opción -i y si ~/.ssh/identity.pub no está disponible, ssh-copy-id mostrará el siguiente mensaje de error.
jsmith@local-host$ ssh-copy-id -i remote-host /usr/bin/ssh-copy-id: ERROR: No identities found
Si ha cargado claves en el ssh-agent usando ssh-add , luego ssh-copy-id obtendrá las claves del ssh-agent para copiar al host remoto. es decir, copia las claves proporcionadas por ssh-add -L comando al host remoto, cuando no pasa opción -i al 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]
Tres molestias menores de ssh-copy-id
Las siguientes son algunas molestias menores del ssh-copy-id.
- Clave pública predeterminada: ssh-copy-id usa ~/.ssh/identity.pub como el archivo de clave pública predeterminado (es decir, cuando no se pasa ningún valor a option -i ). En su lugar, deseo que use id_dsa.pub, o id_rsa.pub, o identity.pub como claves predeterminadas. es decir, si alguno de ellos existe, debería copiarlo en el host remoto. Si existen dos o tres de ellos, debería copiar Identity.pub como predeterminado.
- El agente no tiene identidades: Cuando el ssh-agent se está ejecutando y ssh-add -L devuelve "El agente no tiene identidades" (es decir, no se agregan claves al ssh-agent), el ssh-copy-id seguirá copiando el mensaje "El agente no tiene identidades" en la entrada de claves_autorizadas del host remoto.
- Entrada duplicada en authorized_keys: Deseo que ssh-copy-id valide la entrada duplicada en las claves_autorizadas del host remoto. Si ejecuta ssh-copy-id varias veces en el host local, seguirá agregando la misma clave en el archivo authorized_keys del host remoto sin buscar duplicados. Incluso con entradas duplicadas, todo funciona como se esperaba. Pero, me gustaría tener mi archivo authorized_keys libre de desorden.
Si le gusta este artículo, márquelo como favorito en Delicioso y tropezar .