¿Cómo se usa ssh en un script de shell?
Pregunta
Cuando intento usar un ssh comando en un script de shell, el comando simplemente permanece allí.¿Tiene un ejemplo de cómo utilizar ssh en un script de shell?
Solución
Depende de lo que quieras hacer y de cómo lo uses.Si solo desea ejecutar un comando de forma remota y segura en otra máquina, simplemente use
ssh user@host command
Por ejemplo
ssh user@host ls
Para hacer esto de forma segura, debe solicitar la contraseña al usuario durante el tiempo de ejecución o configurar claves en el host remoto.
Otros consejos
Primero, debe asegurarse de haber configurado el acceso sin contraseña (inicio de sesión con clave pública).Hay al menos dos versiones de ssh con formatos de archivos de configuración ligeramente diferentes.Comprobar el ssh página de manual de su sistema, consulte con su administrador de sistemas local o diríjase a ¿Cómo configuro la autenticación de clave pública?.
Correr ssh en modo por lotes (como dentro de un script de shell), debe pasar el comando que desea ejecutar.La sintaxis es:
ssh host command
Si desea ejecutar más de un comando al mismo tiempo, utilice comillas y punto y coma:
ssh host "command1; command2"
Las comillas son necesarias para proteger los puntos y coma del intérprete de shell.Si los omitiera, solo el primer comando se ejecutaría de forma remota y el resto se ejecutaría en la máquina local.
Puedes usar expect
comando para completar la información de nombre de usuario/contraseña.
Debes poner tu clave pública SSH en el ~/.ssh/authorized_keys
archivo en el host remoto.Entonces podrás conectarte mediante SSH a ese host sin contraseña.
Alternativamente puedes usar ssh-agent
.Recomendaría no almacenar la contraseña en el script.
La forma más sencilla es utilizar un certificado para el usuario que ejecuta el script.
Una más compleja implica agregar a la entrada estándar la contraseña cuando el comando de shell la solicite.Espere que las bibliotecas de Perl muestren al usuario un mensaje que le solicite la contraseña (al menos si es interactivo), hay muchas opciones.