Multisalto con sshpass

Multisalto con sshpass

Quiero usarlo .ssh/configpara conectarme a un host a través de una puerta de enlace. No quiero configurar una clave RSA y tener que usar una contraseña. Anteriormente hice este tipo de salto sin contraseña. Ahora intento hacerlo con contraseña.

Un comando directo que me funciona es:

sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" myusername@myip

Donde ya configuré la autenticación de clave en la puerta de enlace y sus detalles están presentes en mi .ssh/config. Para configurar esto en .ssh/config, intenté lo siguiente:

Host h_act
      <username, hostname, port etc.>
      ProxyCommand ssh gateway -W %h:%p
Host h
      ProxyCommand sshpass -p mypassword ssh h_act

Sin embargo, cuando lo intento ssh h, lo consigo Pseudo-terminal will not be allocated as stdin is not a terminal. Intenté -vttcon ssh recibir mensajes extraños, pero no había terminal. Sé que una cadena de ProxyCommand funciona cuando hay una netcat/nco simplemente ssh -Wcon ella. Pero aquí no funciona. Incluso cuando intento el último comando sin sshpass, aparece el mismo error. Supongo que tiene que ver con ciertas expectativas que ProxyCommand tiene con el comando que sigue y no soy capaz de cumplirlas.

¿Algunas ideas?

Respuesta1

No creo que su configuración sea la misma que esa frase, se parece más a esto:

ssh -o ProxyCommand='sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" h_act' myusername@myip 

es decir, tienes la sshpassejecución dentro de un ProxyCommand.

Pero no creo que eso funcione, sshpassenvuelve al sshcliente en un pseudo-terminal, ocultando el hecho de que la contraseña en realidad proviene de un archivo o algo más que la entrada del usuario desde un terminal. Para hacer esto, debe ejecutarse antes de que sshse ejecute el cliente.

Si su primera frase funciona, pero no tiene ganas de escribirla sshpasscada vez, puede envolverla en un script de shell:

#/bin/sh
sshpass -f passwordfile ssh -o ProxyCommand="ssh gateway -W %h:%p" "$@"

Luego ejecuta con algo como sshscript myusername@myip.

Además, no use sshpass -p, hará que la contraseña sea visible en psla salida mientras el sshcliente (y sshpass) se ejecute. Mejor uso sshpass -epara pasar el pw por el entorno, o sshpass -f filepara leerlo desde un archivo.

información relacionada