Ssh

帶 sshpass 的多跳

  • November 8, 2017

我想用來.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

引用自:https://unix.stackexchange.com/questions/311544