Soy perezoso en casa y uso la autenticación por 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, incluyendo catting luego sshing la clave sobre, scping la clave sobre directamente, etc.
Estoy buscando la manera más fácil y recomendada de copiar una clave, espero que haya una envoltura conveniente en algún lugar en el paquete de Ubuntu ssh.
Ya estoy al tanto de cómo desactivar los inicios de sesión con contraseña.
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 por defecto (use -i identity_file
para otras identidades) al host remoto.
La identidad por defecto es su clave ssh "estándar". Consiste en dos archivos (clave pública y privada) en su directorio ~/.ssh
, normalmente llamados identity
, id_rsa
, id_dsa
, id_ecdsa
o id_ed25519
(y lo mismo con .pub
), dependiendo del tipo de clave. Si no has creado más de una clave ssh, no tienes que preocuparte de especificar la identidad, ssh-copy-id la elegirá 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 que viene por defecto (22
) debes utilizar las comillas de esta forma (fuente):
ssh-copy-id "[email protected] -p <port-number>"
Me gusta la respuesta de Marcel. No conocía este comando. Siempre he estado usando lo que había encontrado en el sitio web de Oracle:
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 shell con el poder de ssh
. ¡Pero usar el ssh-copy-id
es definitivamente una forma más segura de hacerlo correctamente!
Tenga en cuenta que si la carpeta .ssh
no existe ya, el comando anterior fallará. Además, podría ser mejor al crear el archivo establecer un permiso mínimo posible (básicamente lectura-escritura sólo 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"'
Configurar el ordenador para la conexión SSH]1