第二个命令被忽略
ssh -q -t -o ConnectTimeout=10 learnserver sudo su - root -c 'hostname' && "/grep PermitRootLogin /opt/ssh/etc/sshd_config/"
答案1
您可以将命令集作为脚本传递到 ssh。以你的情况为例
{
echo "sudo su -"
echo "hostname"
echo "grep PermitRootLogin /opt/ssh/etc/sshd_config/"
} > /tmp/some-script.sh
进而
ssh your-remote < /tmp/some-script.sh
请注意,“脚本创建”只是您的脚本应该如何的一个示例。
答案2
首先,你确实不需要sudo su
,也肯定不需要sudo su - root
。该su
命令默认为 root,但该sudo
命令的存在是为了运行需要以 root 身份运行的命令。所以你只需要sudo command
.也就是说,您应该避免以 root 身份运行命令,除非确实需要,并且hostname
不需要 root 身份。考虑到所有这些,这应该可以满足您的需要:
ssh -q -t -o ConnectTimeout=10 learnserver sh -c "hostname && sudo grep PermitRootLogin /opt/ssh/etc/sshd_config"
换句话说,不要尝试运行多个命令,而是将多个命令合并为一个。在这里,我们使用的sh -c command
意思是“启动sh
然后运行command
”。