NB: Dies scheint identisch zu sein mitdiese SO-Frage. Es ist verwandt, aber nicht identisch (außerdem befindet es sich auf einer anderen StackExchange-Site). In dieser Frage fragt der Autor nach einer Möglichkeit, einen Befehl in einem entfernten System auszuführen. In dieser Frage frage ich, wie man eine Shell über zwei SSH-Verbindungen öffnet (und verwaltet).
Ich muss über eine Zwischenmaschine (nennen wir sie $gateway
) gehen, um zu meinem zu gelangen $server
. Mein typischer Arbeitsablauf ist also:
ssh $gateway (supply password manually)
ssh $server (supply password manually)
Ich kann die SSH-Public-Key-Authentifizierung auf dem Hop zum konfigurieren, $gateway
aber nicht auf dem zweiten Hop zum $server
. Das Beste, was ich also tun kann, ist:
ssh $gateway (no password necessary)
ssh $server (supply password manually)
Meine Frage ist: Kann ich sshpass
beim zweiten Hop eine andere Methode verwenden, um das Passwort anzugeben? Ich habe keine Berechtigung, Software sshpass
oder andere Software auf dem $gateway
Computer zu installieren.
Antwort1
Sie können versuchen, die manuelle Passworteingabe zu ignorieren -
vipin@kali:~$ cat kk.sh
#!/usr/bin/expect
set password 1 #set password to 1 (hardcoded)
spawn ssh kali@kali # user and hostname is kali
expect "password"
send "$password\r"
interact # to get the shell prompt
vipin@kali:~$ ./kk.sh # execute it and you are in new server
Antwort2
Verwenden ProxyCommand
:
sshpass -p server_password ssh -oProxyCommand="ssh -W %h:%p $gateway" $server
sshpass
Es wird von Ihrem lokalen Host aus ausgeführt .