注意:這可能看起來與這個問題。它是相關的但不相同(加上它在不同的 StackExchange 網站中)。在這個問題中,作者詢問了一種在遠端系統中執行命令的方法。在這個問題中,我問如何透過兩個 SSH 連線開啟(和維護)shell。
我必須通過一台中間機器(我們稱之為$gateway
)才能到達我的$server
.所以我典型的工作流程是:
ssh $gateway (supply password manually)
ssh $server (supply password manually)
我可以在到 的躍點上設定 SSH 公鑰身份驗證,$gateway
但不能在到 的第二躍點上設定 SSH 公鑰身份驗證$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
從您的本機主機運行。