Как использовать sshpass для предоставления пароля на втором ssh-хопе

Как использовать sshpass для предоставления пароля на втором ssh-хопе

Примечание: это может показаться идентичнымэтот ТАК вопрос. Это связано, но не идентично (плюс это на другом сайте StackExchange). В этом вопросе автор спрашивает о способе выполнения команды в удаленной системе. В этом вопросе я спрашиваю, как открыть (и поддерживать) оболочку через два SSH-подключения.

Мне нужно пройти через промежуточную машину (назовем ее $gateway), чтобы достичь моего $server. Так что мой типичный рабочий процесс такой:

ssh $gateway (supply password manually)
ssh $server (supply password manually)

Я могу настроить аутентификацию с открытым ключом SSH на переходе к , $gatewayно не на втором переходе к $server. Поэтому лучшее, что я могу сделать, это:

ssh $gateway (no password necessary)
ssh $server (supply password manually)

Мой вопрос: могу ли я использовать sshpassили какой-либо другой метод для предоставления пароля на втором этапе? У меня нет прав на установку sshpassили любого другого программного обеспечения на $gatewayмашине.

решение1

Вы можете попробовать игнорировать ручной ввод пароля -

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

решение2

Использовать ProxyCommand:

sshpass -p server_password ssh -oProxyCommand="ssh -W %h:%p $gateway" $server

Он будет запущен sshpassс вашего локального хоста.

Связанный контент