Está en: » Artículos »

Acceso ssh sin contraseña

Acceso ssh sin contraseña

En el mundo de la administración de servidores *nix, es común utilizar ssh para saltar de uno a otro y administrar lo necesario o copiar automáticamente archivos (habitualmente backups) ya sea con scp o rsync.

Para estos casos, el escribir una contraseña, puede ser algo molesto pero funciona correctamente. Pero ¿qué pasa si lo que queremos es que acceda un script automáticamente para realizar ciertas acciones?

OpenSSH, normalmente y por defecto, intenta realizar la autenticación por medio de intercambio de claves públicas y privadas, y si no se puede establecer así, procede a pedir la contraseña.

Para una autentificación sin contraseña basada en claves, bastaría con:

Utilizamos el comando ssh-keygen para generar nuestro conjunto de llaves (en nuestro equipo o en el equipo cliente y con el usuario que queramos conectar):

miguel@carmona:~$ ssh-keygen -N ''
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/miguel/.ssh/id_ed25519): 
Your identification has been saved in /home/miguel/.ssh/id_ed25519
Your public key has been saved in /home/miguel/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:T/w8q2xxxxxxxxxxxxxxxxxxMpE miguel@carmona
The key's randomart image is:
+--[ED25519 256]--+
|   xxxxxxxxxxxxx    |
+------[SHA256]------+

Copiamos la clave pública como clave autorizada para x usuario al servidor ssh al que queremos conectar sin contraseña:

miguel@carmona:~$ ssh-copy-id usuario@server-ssh
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/micarsan/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'usuario@server-ssh'"<br>and check to make sure that only the key(s) you wanted were added.

Si no tenemos la herramienta ssh-copy-id en nuestro sistema, bastaría con copiar nuestra clave pública al archivo remoto .ssh/authorized_keys

cat ~/.ssh/id_ed25519.pub | ssh usuario@server-ssh "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat - >> ~/.ssh/authorized_keys"

Y con esto es suficiente para conectar con ssh usuario@server-ssh y veremos como accede directamente sin introducir ninguna contraseña.

Si le hemos establecido contraseña al generar las llaves (introduciéndola entre las comillas simples de -N ‘contraseña_a_elejir’, podemos utilizar ssh-agent o de mejor manera keychain para evitar meter la contraseña. Este método es más recomendable (sobre todo para acceder externamente), pero requiere de alguna configuración más.

Comentarios

Deje su comentario

Previsualización de comentario
  1. Anónimo dice: