帶 sshpass 的多跳
我想用來
.ssh/config
通過網關連接到主機。我不想設置 RSA 密鑰而必須使用密碼。我以前做過這種沒有密碼的跳躍。現在嘗試使用密碼進行操作。對我有用的直接命令是:
sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" myusername@myip
我已經在網關中設置了密鑰身份驗證,它的詳細資訊在我的 .ssh/config 中。要在 中進行設置
.ssh/config
,我嘗試了以下操作:Host h_act <username, hostname, port etc.> ProxyCommand ssh gateway -W %h:%p Host h ProxyCommand sshpass -p mypassword ssh h_act
但是,當我嘗試時
ssh h
,我得到了Pseudo-terminal will not be allocated as stdin is not a terminal
. 我嘗試-vtt
使用 ssh 獲取奇怪的消息,但沒有終端。我知道 ProxyCommand 鏈在存在netcat/nc
或僅存在時起作用ssh -W
。但是在這裡,它不起作用。即使我在沒有 sshpass 的情況下嘗試最後一個命令,我也會得到同樣的錯誤。我猜這與 ProxyCommand 對隨後的命令的某些期望有關,我無法實現它們。有任何想法嗎?
我不認為你的配置和單線一樣,它看起來更像這樣:
ssh -o ProxyCommand='sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" h_act' myusername@myip
即,您
sshpass
在ProxyCommand 中執行。但我認為這不會起作用,將客戶端
sshpass
包裝ssh
在偽終端中,隱藏密碼實際上來自文件或終端使用者輸入以外的其他內容的事實。為此,它需要在ssh
客戶端執行之前執行。如果您的第一個單行程序有效,但您只是不想
sshpass
每次都輸入,您可以將其包裝在 shell 腳本中:#/bin/sh sshpass -f passwordfile ssh -o ProxyCommand="ssh gateway -W %h:%p" "$@"
然後執行類似
sshscript myusername@myip
.順便說一句,不要使用,只要客戶端(和)執行
sshpass -p
,它就會使密碼在輸出中可見。更好地用於通過環境傳遞 pw,或從文件中讀取它。ps``ssh``sshpass``sshpass -e``sshpass -f file