SSH 和重定向

SSH 和重定向

考慮以下命令:

ssh aristotle sudo /bin/sh < test.sh

我希望應用重定向,/bin/sh但它被 sudo 消耗。關於如何實現我想要的任何想法?

答案1

為什麼不直接複製 test.sh 然後呼叫它呢?

scp test.sh aristotle:/tmp/test.$$.sh
ssh aristotle sudo /bin/sh /tmp/test.$$.sh
ssh aristotle rm /tmp/test.$$.sh

$$ 是本機電腦上進程的 PID,提供一定程度的隨機性,這樣您的檔案就不會被破壞。

答案2

重定向使用 ssh 和 sudo!它只會幹擾來自 ssh 和/或 sudo 的任何密碼對話框。

因此,您不使用重定向,而是使用解決方法,例如首先將腳本複製到目標計算機,然後執行它(例如@edoloughlin建議)。

或者您將 ssh 和 sudo 配置為不提示輸入密碼。然後它就像一個魅力:

$ echo "hostname" | ssh -A orwell sudo /bin/sh
orwell

有成千上萬的 Howtos 解釋如何使用 ssh 無密碼,所以我不解釋那部分。至於sudo,有幾種方法可以無密碼地使用它。 @jtimberman建議一般情況下允許有問題的使用者使用無密碼 sudo (透過 sudo 的NOPASSWD功能,請參閱須藤者(5))。

我個人使用PAM模組pam-ssh-代理。它允許 sudo 針對轉發的 ssh 代理進行身份驗證,並且僅在沒有可用的 ssh 代理時才回退到基於密碼的身份驗證。僅在 Debian 和 Ubuntu 上

apt-get install pam-ssh-agent-auth

然後按照中記錄的進行配置pam_ssh_agent_auth(8)

答案3

試試這個方法:

ssh aristotle sudo /bin/sh -c "/bin/sh \\< test.sh"

答案4

我使用ssh somehost sudo cat \< /etc/passwd並取得了一些成功;嘗試類似的東西:

ssh aristotle sudo /bin/sh \< test.sh

相關內容