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 rsaEjecute el siguiente comando para abrir el sshd_config Archivo con el editor Nano para agregar algunas configuraciones necesarias.
$ sudo nano/etc/ssh/sshd_configAgregue 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íEjecute el siguiente comando para reiniciar el servicio SSH.
$ sudo servicio ssh reiniciarSintaxis
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 comandoDiferentes 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 sshpassLa 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'> sshfileEjecute el siguiente comando para establecer los bits de permiso para el sshfile archivo que hará que el archivo sea seguro.
$ chmod 0400 sshfileAhora, 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.mierdaEjecute el siguiente comando desde el terminal.
$ bash ssh.mierdaLa 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.