¿La manera más fácil de copiar claves ssh a otra máquina?

295

Soy flojo en casa y uso la autenticación con contraseña para las máquinas de mi casa. Estoy listo para pasar a la autenticación basada en clave. Hay muchas opciones en la web sobre cómo hacer esto, incluido el catting y luego el descifrado de la clave, pasando la llave directamente, etc.

Estoy buscando la manera más fácil y recomendada de copiar una clave, con suerte, ¿hay algún contenedor de conveniencia en algún lugar del paquete Ubuntu ssh?

Ya conozco en cómo desactivar los inicios de sesión de contraseñas .

    
pregunta Jorge Castro 27.09.2010 - 22:24

5 respuestas

407

El comando ssh-copy-id (en el paquete openssh-client e instalado por defecto) hace exactamente esto:

ssh-copy-id [email protected]

copia la clave pública de su identidad predeterminada (use -i identity_file para otras identidades) en el host remoto.

La identidad predeterminada es su clave ssh "estándar". Consiste en dos archivos (clave pública y privada) en su directorio ~/.ssh , normalmente llamados identity , id_rsa o id_dsa (y lo mismo con .pub ), dependiendo del tipo de clave. Si no creaste más de una clave ssh, no tienes que preocuparte por especificar la identidad, ssh-copy-id simplemente la elegirá automáticamente.

En caso de que no tenga una identidad, puede generar una con la herramienta ssh-keygen .

Además, si el servidor usa un puerto diferente al predeterminado ( 22 ), debe usar comillas de esta manera ( fuente ):

ssh-copy-id "[email protected] -p <port-number>"
    
respondido por el Marcel Stimberg 27.09.2010 - 23:01
112

Me gusta la respuesta de Marcel. No sabía este comando. Siempre he estado usando lo que encontré en un sitio web de SUN :

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

Pensé en publicarlo aquí todavía, porque es una buena ilustración de lo que se puede lograr en código de shell con la potencia de ssh . ¡Pero usar ssh-copy-id es definitivamente una forma más segura de hacerlo correctamente!

Tenga en cuenta que si la carpeta .ssh no existe, el comando anterior fallará. Además, podría ser mejor al crear el archivo para establecer un permiso mínimo posible (básicamente lectura-escritura solo para el propietario). Aquí hay un comando más avanzado:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
    
respondido por el Huygens 12.10.2010 - 00:26
25

Método gráfico

  1. Abre Aplicaciones ▸ Contraseñas y claves ▸ Mis llaves personales .
  2. Seleccione su clave y luego haga clic en Remoto ▸ Configurar clave para Secure Shell .

    
respondido por el ændrük 27.09.2010 - 22:32
18

En Ubuntu puede recuperar sus claves desde Launchpad:

ssh-import-id [launchpad account name]

Detalles :

  1. Necesita una cuenta Launchpad para iniciar sesión o crear una cuenta
  2. Después de iniciar sesión, haga clic en el botón al lado de teclas SSH:
  3. Pegue el contenido de su archivo de clave pública en ese campo (incluido el comentario). Tal clave se ve así:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    Aquí, ssh-rsa indica que la clave es una clave RSA, AAAAB3Nza .... UyDOFDqJp es la clave real y lekensteyn es el comentario.

  4. Guarde la clave presionando Importar clave pública
  5. Si todo salió bien, su clave ahora debería aparecer bajo claves SSH:

El paquete ssh-import-id debe instalarse en la máquina a la que se debe acceder desde remoto. Este paquete se instala junto con el paquete openssh-server ya que es un paquete recomendado para openssh-server . Después de asegurarse de que se haya instalado ssh-import-id en la máquina cliente, ejecute:

ssh-import-id [launchpad account name]

Esto descargará la clave pública de los servidores de Launchpad a través de HTTPS que lo protege de los ataques de MITM.

En Ubuntu Lucid y antes, puedes lograr lo mismo con:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

El comando echo es necesario para obtener una nueva línea adicional después de la línea con la clave SSH.

  • Página manual de ssh-import-id
respondido por el Lekensteyn 10.06.2011 - 21:20
12

para puerto personalizado

ssh-copy-id -i "[email protected] -p2222"

-i cambia por defecto a ~ / .ssh / id_rsa.pub, si quiere otra clave, ponga la ruta de la clave después de -i

ADVERTENCIA: si no escribiste el -i, copiará todas las claves encontradas en ~ / .ssh

    
respondido por el Omar A. Shaban 08.03.2013 - 21:16

Lea otras preguntas en las etiquetas