Примечание: это может показаться идентичнымэтот ТАК вопрос. Это связано, но не идентично (плюс это на другом сайте 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
с вашего локального хоста.