sshpass: una excelente herramienta para el inicio de sesión SSH no interactivo: nunca lo use en el servidor de producción

En la mayoría de los casos, los administradores del sistema Linux inician sesión en servidores Linux remotos usando SSH, ya sea proporcionando una contraseña, o un inicio de sesión SSH sin contraseña o autenticación SSH basada en claves.

¿Qué sucede si desea proporcionar un contraseña. junto con nombre de usuario. para el mensaje SSH? aquí es donde sshpass. viene a rescatar.

sshpass. es una herramienta de línea de comandos simple y liviana que nos permite proporcionar una contraseña (autenticación de contraseña no interactiva ) al símbolo del sistema en sí, de modo que se puedan ejecutar scripts de shell automatizados para realizar copias de seguridad a través del programador cron.

ssh usa acceso directo TTY para asegurarse de que la contraseña sea realmente proporcionada por un usuario de teclado interactivo. Sshpass ejecuta ssh en un tty dedicado, engañarlo haciéndole creer que está recibiendo la contraseña de un usuario interactivo.

Importante. Usar sshpass. considerado el menos seguro, ya que revela la contraseña a todos los usuarios del sistema en la línea de comandos con un simple comando “ps”. Recomiendo encarecidamente utilizar la autenticación sin contraseña SSH.

Instalar sshpass en sistemas Linux

freestar.config.enabled_slots.push

En los sistemas basados ​​en RedHat/CentOS. primero debe habilitar el repositorio de Epel en su sistema para instalarlo usando el comando yum como se muestra.

# yum install sshpass # dnf install sshpass [On Fedora 22+. versiones]

En Debian/Ubuntu y sus derivados, puede instalarlo usando el comando apt-get como se muestra.

$ sudo apt-get install sshpass

Alternativamente, puede instalar desde la fuente para tener la última versión de sshpass. primero descargue el código fuente y luego extraiga el contenido del archivo tar e instálelo así:

$ wget http://sourceforge.net/proyectos/sshpass/files/latest/download-O sshpass.tar.gz $ tar-xvf sshpass.tar.gz $ cd sshpass-1.06 $ ./configure # sudo make install

Cómo usar sshpass en Linux

sshpass. se usa junto con ssh. puede ver todas las opciones de uso de sshpass. con descripciones completas emitiendo el siguiente comando:

$ sshpass-h sshpass Uso de la ayuda: sshpass [-f |-d |-p |-e] [-hV] parámetros de comando-f nombre de archivo Toma la contraseña para usar del archivo-d número Usa el número como descriptor de archivo para obtener la contraseña-p contraseña Proporciona contraseña como argumento (seguridad imprudente)-e La contraseña se pasa como env-var “SSHPASS” Sin parámetros-la contraseña se tomará de stdin-h Mostrar ayuda (esta pantalla)-V Imprimir información de versión Como máximo uno de-f,-d,-p o-e deben usarse

Como mencioné antes, sshpass. es más confiable y útil para propósitos de scripting, considere los comandos de ejemplo a continuación.

Inicie sesión en servidor ssh remoto de Linux (10.42.0.1) con el nombre de usuario y la contraseña y verifique el uso del disco del sistema de archivos del sistema remoto como se muestra.

$ sshpass-p ‘my_pass_here’. ssh [email protected] ‘df-h’

Importante. Aquí, la contraseña se proporciona en la línea de comando que es prácticamente insegura y no se recomienda usar esta opción.

 sshpass-Inicio de sesión remoto de Linux a través de SSH sshpass-Inicio de sesión remoto de Linux a través de SSH

Sin embargo, para evitar que se muestre la contraseña en la pantalla, puede usar la marca-e e ingresar la contraseña como un valor de la variable de entorno SSHPASS. como se muestra a continuación:

$ export SSHPASS = ‘my_pass_here’. $ echo $ SSHPASS $ sshpass-e ssh [email protected] ‘df-h’  sshpass-Ocultar contraseña en el mensaje sshpass-Ocultar contraseña en el mensaje

Nota:. en el ejemplo anterior, la variable de entorno SSHPASS. es solo para fines temporales y se eliminará durante el reinicio.

Para configurar de forma permanente SSHPASS. variable de entorno, abra el archivo /etc/profile. y escriba th La declaración de exportación al principio del archivo:

export SSHPASS = ‘my_pass_here’.

Guarde el archivo y salga, luego ejecute el siguiente comando para efectuar los cambios:

$ source/etc/profile

Por otro lado, también puede usar el indicador-f y poner la contraseña en un archivo. De esta manera, puede leer la contraseña del archivo de la siguiente manera:

$ sshpass-f password_filename. ssh [email protected] ‘df-h’  sshpass-Proporcione el archivo de contraseña para iniciar sesión sshpass-Proporcione el archivo de contraseña para iniciar sesión

También puede usar sshpass para transferir archivos usando scp o archivos de respaldo/sincronización a través de rsync usando SSH como se muestra:

——-Transferir archivos usando SCP——-

$ scp-r/var/www/html/example.com–rsh = “sshpass-p ‘my_pass_here ‘ ssh-l aaronkilik “10.42.0.1:/var/www/html ——-Copia de seguridad o sincronización de archivos mediante Rsync——-

$ rsync–rsh = “sshpass-p ‘my_pass_here’. ssh-l aaronkilik” 10.42.0.1:/data/backup//backup/

Para mayor uso, le sugerimos que lea la página de manual de sshpass. escriba:

$ man sshpass

En este artículo, explicamos sshpass. una herramienta sencilla que permite autenticación de contraseña interactiva. Aunque estas herramientas pueden ser útiles, se recomienda encarecidamente utilizar el mecanismo de autenticación de clave pública más seguro de ssh.

Por favor, deje una pregunta o comentario a través de la sección de comentarios a continuación para cualquier discusión adicional.