Acceso ssh sin contraseña
Enviado por miguelcarmona :: 2 de octubre de 2008
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 el cliente con el usuario que querramos conectar):
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''
Copiamos la clave pública como clave autorizada para x usuario al servidor ssh al que queremos conectar sin contraseña:
cat ~/.ssh/id_rsa.pub | ssh x_usuario@ip_servidor_ssh "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat - >> ~/.ssh/authorized_keys"
Y con esto es suficiente. Podemos probrar haciéndo un ssh usuario@ip_servidor 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.