¿Cómo puedo utilizar el cliente SSH en el shell o en la consola de Unix / Linux? Vamos a verlo, aunque primero, vamos a explicar qué es un cliente SSH.
Un cliente SSH es una aplicación que se utiliza para acceder a un sistema remoto para gestionarlo mediante comandos. El protocolo SSH permite la conexión a otro host una vez se han validado los datos de acceso, ya que la identidad del usuario debe ser verificada. Una vez conectados, los comandos que escribimos serán ejecutados en el sistema remoto y no en nuestro sistema.
Sintaxis general de SSH
La sintaxis general es la siguiente:
ssh usuario@host comando
Es decir, primero escribimos el propio comando SSH, seguidamente nuestro nombre de usuario en el sistema remoto y, tras el símbolo @, el nombre del host remoto. Adicionalmente también podemos escribir una serie de comandos que se ejecutarán en el sistema remoto.
Por ejemplo, para acceder con «yo» como nombre de usuario a un hipotético sistema llamado sistema.neoguias.com y mostrar quién está conectado, debemos introducir el siguiente comando:
# ssh yo@miservidor.com who
Ahora vamos a ver cómo utilizar SSH dentro de un script.
Uso de SSH en un shell script
También es posible utilizar el comando SSH en un Shell Script. El problema es que se nos pedirá una contraseña. Para evitar que se nos pida la contraseña, necesitamos un sistema de autenticación con clave pública. Una vez configurada la clave pública, crearemos nuestro script con los comandos que queramos ejecutar en el sistema remoto.
A modo de ejemplo, vamos a crear un script que almacene en un archivo de texto un listado de los usuarios que están conectados en el momento de la conexión. Estos son los pasos:
- Lo primero que tenemos que hacer es crear y editar un script sh, al que, en este caso, le daremos el nombre de scriptssh.sh. Podmeos utilizar un editor como vi o nano:
# nano scriptssh.sh
- Ahora introducimos el código de nuestro script:
#!/bin/bash # Lista de usuarios conectados en Unix/Linux HOST="192.168.0.1" # Nombre de usuario SSH USUARIO="admin" # Nombre del archivo en el que guardamos los datos FICHERO="salida.txt" ssh $USUARIO@$HOST w > $FICHERO
Lo único que hacemos es ejecutar el comando w (similar a who) y redirigir la salida al fichero salida.txt, en el que se almacenarán los datos. Ahora guardamos el archivo y lo cerramos.
- Para ejecutar el script, debemos darle los permisos de ejecución adecuados:
# chmod +x scriptssh.sh
- Ahora, sencillamente lo ejecutamos. Si tenéis dudas acerca de cómo ejecutar un script, podéis consular esta guía para ejecutar scripts sh. Vamos a ello:
# ./scriptssh.sh
En caso de que os salga un error en el que se dice algo así como «pseudo-terminal will not be allocated because stdin is not a terminal», debéis hacer lo siguiente; en lugar de «ssh $USUARIO@$HOST w > $FICHERO», debéis escribir «ssh -t -t -l $USUARIO@$HOST w > $FICHERO».
- Si todo ha ido bien, veremos la salida del comando en el archivo salida.txt. Para abrirlo usamos el siguiente comando:
# nano salida.txt
Esto ha sido todo. Espero que os haya sido útil.
Hola espero te encuentres bien. Encontré tu post y me ha ayudado mucho a entender algunas cosas, ahora estoy tratando de correr un script de shell para conectarme vía SSH a un servidor Linux desde terminal de MAcOS pero no he logrado pasar los argumentos a terminal. En si es automatizar la ejecucion de terminal y que se jecute ssh para conectarme al servidor. Alguna idea?
DE antemano gracias y disculpa las molestias.
Chuy Maldonado