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

有成千上万的指南解释了如何无密码使用 ssh,所以我就不解释那部分了。至于 sudo,有几种方法可以无密码使用。@jtimberman建议允许相关用户无密码使用 sudo(通过 sudoNOPASSWD功能,请参阅sudoers(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

相关内容