Advance autologin via 2 jumphost / passphrase

Necesito encontrar una forma de iniciar session en Remote Machine. Hay varias forms en que podemos hacer esto, pero esto es un poco complicado para mí.

Inicio de session automático en una máquina remota y ejecutar commands o secuencias de commands y networkingirigir la salida en el file del sistema local.

ssh remote-host < ./script >> storageinfo_$date.txt 

Pero la parte más difícil es que no podemos conectarnos directamente al host remoto; primero tenemos que conectarnos a Jumphost1 -> Jumphost2 -> y luego -> remote-host

Jumphostx está habilitado para sshkeygen pero con contraseña para, por ejemplo: userpass
remote-host no está habilitado sshkeygen, por ejemplo: remotepass

Solíamos hacer esto con el file .ssh/config de la siguiente manera. Esto fue exitoso hasta ahora en el entorno de testing. Pero no se supone que debemos instalar esperar en el entorno en vivo.

 # cat .ssh/config Host jump1-* User ldap-user IdentityFile ~/.ssh/id_rsa ForwardAgent yes ServerAliveInterval 60 ServerAliveCountMax 12 Host jump1-centos01-temporary Hostname 13.1.2.19 Port 2222 Host jump1-centos01 Hostname 1.2.1.18 Port 22 ProxyCommand ssh -W %h:%p jump1-centos01-temporary Host remote-host Hostname 12.1.1.8 ProxyCommand ssh -W %h:%p jump1-centos01 User root 

connection ssh con esperar y enviar patern

 # cat expect.sh #!/usr/bin/env expect set timeout 7 set date [exec date "+%d-%B-%Y"] spawn sh -c "ssh va1ap-vsns0001n < ./isi.py > storageinfo_$date.txt" expect "Enter passphrase for key '/root/.ssh/id_rsa':" send "\r" expect "Enter passphrase for key '/root/.ssh/id_rsa':" send "userpass\r" expect "Enter passphrase for key '/root/.ssh/id_rsa':" send "userpass\r" expect "Password:" send "remotepass\r" interact 

ssh -t $jump1 ssh -t $jump2 ssh -t $tgt

lograría la connection que está buscando; -t asegura que se asigna una pty, que normalmente no sería si se le pide a ssh que ejecute un command en el destino.

En esta circunstancia, un reenvío de agente y agente parece totalmente apropiado, por lo que se vería más como esto:

ssh -A -t $jump1 ssh -A -t $jump2 ssh -t $tgt

Si eso no funciona para usted, el script se puede utilizar como una alternativa a expect en algunas circunstancias. Por ejemplo, echo $passwd | script -q -f -c "ssh -q -t $host sudo -p \"''\" \"$some_command\" echo $passwd | script -q -f -c "ssh -q -t $host sudo -p \"''\" \"$some_command\" es un patrón que he necesitado para fines no interactivos.

Realmente, sin embargo, presionaría para que se configure algún tipo de autorización basada en key o inicio de session único; el flujo de trabajo que describe suena como una pesadilla, especialmente si se requiere que sus entornos de testing y testing sean tan diferentes.