
Quiero conectarme por SSH a una máquina remota, pero en lugar de escribir la contraseña, quiero redirigirla desde otro archivo.
Entonces tengo un archivo password.txt
que almacena la contraseña. File.sh
es mi archivo bash.
EnFile.sh
#!/bin/bash
ssh -T [email protected]
Mientras ejecutaba el archivo, hice:
./File.sh < password.txt
Pero de todos modos me pidieron que ingresara la contraseña.
¿Cómo consigo que la contraseña se ingrese desde el archivo?
Respuesta1
SSH con 'contraseña en un archivo' se usa comúnmente como autenticación de clave pública. Cree un par de claves usando ssh-keygen
, cargue la clave pública en el otro host:
scp ./.ssh/id_rsa.pub [email protected]:~/
y colóquelo como ~/.ssh/authorized_keys
:
ssh [email protected]
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
o, si authorized_keys
ya existe un archivo:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
establezca los permisos apropiados (600 para el archivo, 700 para el directorio):
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
e iniciar una nueva sesión ssh.
Respuesta2
Puedes usar sshpass
para hacer eso:
sshpass -f password.txt ssh -T [email protected]
Respuesta3
#!/usr/bin/expect -f
spawn ssh shw@hostname
expect -exact "shw@hostname's password: "
send -- "PASSWORD\r"
expect "$ "
interact
Expect es una herramienta para automatizar el proceso.