Cómo automatizar los inicios de sesión SSH si debe usar una contraseña

Contenidos

Bash Shell

SSH no cuenta con una manera fácil de enviar contraseñas a través de la entrada estándar, lo que dificulta la automatización. Aunque no es ideal para la seguridad, puede automatizar la autenticación de contraseña SSH en scripts bash usando el sshpass utilidad.

Antes de comenzar, el uso de contraseñas automáticas para SSH se considera una mala práctica por un motivo. En casi todos los casos, es mejor utilizar una clave SSH, que mostraremos a continuación. A pesar de esto, las contraseñas disponen la ventaja de ser más fáciles de administrar, recordar y repartir a los miembros del equipo. Todos esos son inconvenientes simultáneamente para la seguridad, pero esa es una compensación que puede elegir por realizar.

Usando SSHPass

El regular ssh el comando no tiene un --password bandera para permitirle automatizar esto fácilmente. Deberás de instalar una herramienta llamada sshpass para manejar esto explícitamente. Puede descargarlo de la mayoría de los administradores de paquetes de Linux; para sistemas basados ​​en Debian como Ubuntu, eso sería:

sudo apt-get install sshpass

Si estas usando sshpass desde el interior de un archivo de secuencia de comandos, puede pasarlo de forma directa con el -p flag, seguido de su comando SSH estándar:

sshpass -p 'password' ssh user@remote

A pesar de esto, esta no es una buena práctica por algunas razones:

  • Si se utiliza fuera de un archivo de secuencia de comandos, expone la contraseña de texto sin formato al historial de comandos de Linux y otros sistemas. Es factible que otros usuarios de Linux puedan verlo.
  • Es factible que no esté claro que haya una contraseña oculta en este archivo de secuencia de comandos, lo que podría generar permisos de archivo incorrectos que lo expongan.
  • Se puede rastrear accidentalmente en el control de versiones y no posibilita cambiar la contraseña utilizada en los clientes.

Debido a esto, debe almacenar la contraseña en un archivo. Asegúrese de configurar los permisos para asegurarse de que otros usuarios no puedan entrar a él.

echo "password" > password_file
chmod 600 password_file

Después, pasa esto a sshpass con -f:

sshpass -f password_file ssh user@remote

Configurar claves SSH en su lugar

Las claves SSH son las preferidas para la mayoría de los sistemas. Son mucho más largos y más difíciles de filtrar accidentalmente, lo que los hace ideales para la seguridad. Además fomentan la autenticación basada en identidad, dado que las claves SSH de forma general están vinculadas a la máquina en la que se crean.

SSH almacena su clave pública en ~/.ssh/id_rsa.pub, que utiliza para todas las solicitudes. Es fácil generar un nuevo archivo de clave:

ssh-keygen

Necesita agregar esto al ~/.ssh/authorized_keys archivo en el servidor al que desea conectarse. Hay un comando SSH integrado que puede hacer esto fácilmente por usted:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Una vez realizado esto, ya no se le pedirá una contraseña. Puede copiar esta clave en otras máquinas, pero regularmente está bien agregar varias claves.

Aún querrá deshabilitar los inicios de sesión con contraseña en el servidor remoto y probablemente configurar la limitación de velocidad, la lista blanca o inclusive la autenticación de dos factores. Puede leer nuestra guía para proteger una máquina alcanzable SSH para obtener más información.

RELACIONADO: Cómo bloquear su servidor SSH

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.