So verwenden Sie sshpass, um beim zweiten SSH-Hop ein Kennwort anzugeben

So verwenden Sie sshpass, um beim zweiten SSH-Hop ein Kennwort anzugeben

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, $gatewayaber 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 sshpassbeim zweiten Hop eine andere Methode verwenden, um das Passwort anzugeben? Ich habe keine Berechtigung, Software sshpassoder andere Software auf dem $gatewayComputer 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

sshpassEs wird von Ihrem lokalen Host aus ausgeführt .

verwandte Informationen