Cómo usar SSHPass para inicio de sesión SSH no interactivo

Cómo usar SSHPass para inicio de sesión SSH no interactivo
El usuario de Linux puede usar una autenticación basada en contraseña o sin contraseña para iniciar sesión en el servidor remoto utilizando SSH. La autenticación sin contraseña es más segura, pero la forma de autenticación más fácil y popular es la autenticación basada en contraseña. El usuario debe proporcionar la contraseña cuando sea necesario para autenticarse y el SSH también requiere acceder a un script de shell manualmente.

El sshpass La utilidad se utiliza para implementar la autenticación automatizada basada en contraseñas. Ejecuta el SSH en TTY dedicado (teletypewriter) para confirmar que la contraseña es proporcionada por un usuario de teclado interactivo para la autenticación no interactiva. Cómo sshpass se puede utilizar para la autenticación que se ha mostrado en este tutorial.

Requisitos previos

Antes de comenzar los pasos de este tutorial, se requerirán los siguientes pasos para completar.

Habilite el servicio SSH en Ubuntu si no está habilitado antes.

Genere los pares de teclas SSH para ejecutar los comandos en el servidor remoto. Ejecute el siguiente comando para crear la clave pública y la clave privada. La clave privada se almacenará en el servidor remoto y las claves públicas se almacenarán en el cliente de forma segura.

$ ssh -keygen -t rsa

Ejecute el siguiente comando para abrir el sshd_config Archivo con el editor Nano para agregar algunas configuraciones necesarias.

$ sudo nano/etc/ssh/sshd_config

Agregue las siguientes líneas en el archivo para habilitar el inicio de sesión raíz y la autenticación basada en contraseña.

Contraseña Autenticación Sí
Permitrootlogin si

Ejecute el siguiente comando para reiniciar el servicio SSH.

$ sudo servicio ssh reiniciar

Sintaxis

La sintaxis de este comando se da a continuación. Admite diferentes opciones que se han descrito más adelante.

$ sshpass [-f filename | -d número | -p contraseña | -e] [opciones] argumentos de comando

Diferentes opciones del comando sshpass

El propósito de diferente sshpass Las opciones se han descrito aquí. sshpass Lee la contraseña de la entrada estándar si no se da ninguna opción.

Opción Objetivo
-P Contraseña Se utiliza para proporcionar la contraseña en la línea de comando.
-F Nombre de archivo Se utiliza para dar la fuente alternativa de la contraseña.
-d número Se utiliza para proporcionar el descriptor de archivo heredado por SSHPass.
-mi Se utiliza para tomar la contraseña de la variable de entorno "SSHPASS".

Instalar sshpass

SSHPASS no está instalado en Ubuntu de forma predeterminada. Ejecute el siguiente comando para instalar SSHPass en Ubuntu.

$ sudo apt-get instalación sshpass

La siguiente salida aparecerá si el SSHPass está instalado correctamente.

Conectarse con el servidor proporcionando una contraseña

La forma de conectarse con la máquina remota utilizando la opción SSHPass with -p se muestra en esta parte del tutorial. Aquí, el nombre de usuario es 'Fahmida' y la contraseña es '12345' de la máquina de Sever. La dirección IP de la máquina del servidor es 10.0.2.15. El nombre de usuario de la máquina del cliente es 'símin'. Ejecute el siguiente comando para conectarse con el servidor proporcionando la contraseña.

$ sshpass -p '12345' ssh [email protected]

La siguiente salida aparecerá si la conexión se establece correctamente con la máquina del servidor. La salida muestra que el nombre de usuario se cambia a 'fahmida' de 'yesmin' en el símbolo del sistema después de establecer la conexión. Ahora, si el usuario ejecuta algún comando, se ejecutará desde la máquina del servidor.

Conectarse con el servidor sin proporcionar una contraseña

No es seguro proporcionar la contraseña en la línea de comando. Este problema se puede resolver de dos maneras. Una forma es guardar la contraseña en la variable de entorno utilizando el exportar comando y otra forma es guardar la contraseña en un archivo.

Ejecute el siguiente comando para guardar la contraseña en la variable de entorno SSHPASS utilizando el comando de exportación.

$ exports sshpass = "12345"

Ahora, puede ejecutar el comando sshpass con la opción -e para hacer la conexión con la máquina del servidor sin proporcionar una contraseña en la línea de comando. Ejecute el siguiente comando para conectarse con el servidor sin dar la contraseña.

$ sshpass -e ssh [email protected]

La siguiente salida aparecerá si la conexión se establece correctamente con la máquina del servidor. La salida muestra que el nombre de usuario se cambia a 'fahmida' desde 'yesmin' en el símbolo del sistema después de establecer la conexión como el comando anterior.

La forma de conectarse con el servidor usando sshpass Al guardar la contraseña en un archivo, se ha mostrado en esta parte del tutorial. Ejecute el siguiente comando para crear el sshfile Archivo y almacene la contraseña para conectarse con la máquina del servidor.

$ echo '12345'> sshfile

Ejecute el siguiente comando para establecer los bits de permiso para el sshfile archivo que hará que el archivo sea seguro.

$ chmod 0400 sshfile

Ahora, ejecute el siguiente comando para conectarse con el servidor sin proporcionar la contraseña en la línea de comando. Aquí, la opción -f se ha utilizado con sshpass comandar para leer la contraseña del archivo.

$ sshpass -f sshfile ssh [email protected]

La siguiente salida aparecerá si la conexión se establece correctamente con la máquina del servidor. La salida muestra que el nombre de usuario se cambia a 'fahmida' desde 'yesmin' en el símbolo del sistema después de establecer la conexión como el comando anterior.

Usando el comando sshpass en el script

El comando sshpass se usa para hacer la conexión con el servidor desde el terminal en la parte anterior de este tutorial. Pero puede ejecutar cualquier comando en la máquina del servidor sin iniciar sesión en el servidor escribiendo un script bash con el comando sshpass. Crear un archivo bash llamado ssh.mierda en la máquina del cliente con el siguiente contenido. El script ejecutará el 'PWD' comando en la máquina del servidor y almacene la salida en una variable. El valor de la variable se imprimirá más tarde.

ssh.mierda
#!/bin/bash
valor = $ (sshpass -f sshfile ssh [email protected] 'PWD')
Echo $ valor

Ejecute el siguiente comando desde el terminal.

$ bash ssh.mierda

La siguiente salida aparecerá si el pwd El comando se ejecuta correctamente en la máquina del servidor. El nombre de usuario de la máquina del servidor es 'fahmida'. Entonces, la salida muestra que '/home/fahmida/' es la salida del pwd dominio.

Conclusión

Los usos del comando sshpass para inicio de sesión no interactivo se han mostrado en este tutorial por dos cuentas de usuario diferentes del localhost local. Puede hacer la misma tarea para el host remoto siguiendo los pasos que se muestran en este tutorial.