Soy perezoso en casa y uso la autenticación con contraseña para mis máquinas domésticas. Estoy listo para pasar a la autenticación basada en claves. Hay muchas opciones en la web sobre cómo hacer esto, que incluyen capturar y luego transferir la clave, transferir la clave directamente, etc.
Estoy buscando la forma más fácil y recomendada de copiar una clave, con suerte, hay un contenedor de conveniencia en algún lugar del paquete Ubuntu ssh.
El ssh-copy-id comando (en el cliente openssh paquete e instalado por defecto) hace exactamente esto:
ssh-copy-id user@hostname.example.com
copia la clave pública de su identidad predeterminada (use -i identity_file para otras identidades) al host remoto.
La identidad predeterminada es su clave SSH "estándar". Consta de dos archivos (clave pública y privada) en su ~/.ssh directorio, normalmente con nombre identity, id_rsa, id_dsa, id_ecdsa o id_ed25519 (y lo mismo con .pub), dependiendo del tipo de clave. Si no creó más de una clave ssh, no tiene que preocuparse por especificar la identidad, ssh-copy-id simplemente la seleccionará automáticamente.
En caso de que no tengas una identidad, puedes generar una con la herramienta ssh-keygen.
Además, si el servidor utiliza un puerto diferente al predeterminado (22) debe usar comillas de esta manera (fuente):
Pensé en publicarlo aquí todavía, porque es una buena ilustración de lo que se puede lograr en código de shell con el poder de ssh. Pero usando el ssh-copy-id es definitivamente una forma más segura de hacerlo correctamente!
Tenga en cuenta que si la carpeta .ssh ya no existe, el comando anterior fallará. Además, podría ser mejor al crear el archivo establecer un permiso mínimo posible (básicamente lectura-escritura solo para el propietario). Aquí hay un comando más avanzado:
Después de iniciar sesión, haga clic en el botón junto a Claves SSH:
Pegue el contenido de su archivo de clave pública en ese campo (incluido el comentario). Tal llave parece:
ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
Aqui, ssh-rsa indica que la clave es una clave RSA, AAAAB3Nza .... UyDOFDqJp es la clave real y lekensteyn es el comentario.
Guarde la tecla pulsando Importar Clave Pública
Si todo salió bien, su clave ahora debería aparecer en Claves SSH:
Paquete ssh-import-id debe instalarse en la máquina a la que se debe acceder de forma remota. Este paquete se instala junto con el openssh-server paquete es un paquete recomendado para openssh-server. Después de asegurarse de que ssh-import-id se ha instalado en el equipo cliente, ejecute:
ssh-import-id [launchpad account name]
Esto descargará la clave pública de los servidores de Launchpad a través de HTTPS, lo que lo protege de los ataques MITM.
En Ubuntu Lucid y anteriores, puede lograr lo mismo con:
ssh-copy-id hace exactamente eso. No estoy seguro de por qué algunas de las otras respuestas aquí agregan información inexacta. La ayuda muestra lo siguiente:
~$ ssh-copy-id -hUsage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname -f: force mode -- copy keys without trying to check if they are already installed -n: dry run -- no keys are actually copied -h|-?: print this help
Acabo de probar lo siguiente en el cliente Ubuntu 18.04 con un servidor CentOS 7.6 y funcionó a las mil maravillas. El ejemplo muestra el uso de un puerto personalizado de 2222, y especificando una clave pública en ~/.ssh/path-to-rsa.pub
Antes de ejecutar el comando, en realidad usé el -n cambie al final para hacer una ejecución en seco que confirme que el comando funcionará según lo previsto. Una vez que lo confirmé, ejecuté el comando nuevamente como se indicó anteriormente, sin el -n interruptor.