考慮以下命令:
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