我有一个以 root 身份运行的脚本。它通过 ssh 连接到远程主机并以用户 gol 身份运行脚本。我已将用户(gol)的 ssh 密钥添加到远程主机。但由于该脚本以 root 身份运行,它仍然提示输入密码。脚本内容如下
ssh gol@remotehost '/home/scripts/script1.sh'
所以我在运行 ssh 命令之前更改了命令以切换到本地用户(因为 gol 用户添加了 ssh 密钥),但它失败了。
su - gol -c ssh gol@remotehost '/home/scripts/script1.sh'
我需要以 root 身份运行它,因为该脚本还有其他脚本。
答案1
问题是默认情况下 SSH 将尝试使用root
的私钥,因为客户端以 root 身份运行。如果您仍然想以 root 身份运行但想使用 gol 的私钥,那么这可能是可能的,因为 root 可以访问一切。因此,要以 root 身份调用 ssh 但使用gol
的私钥,您只需告诉 ssh 私钥在哪里即可。我不知道你的系统,但它很可能就在这里:
/home/gol/.ssh/id_rsa
您可以告诉 ssh 使用哪个私钥:
ssh -i /home/gol/.ssh/id_rsa gol@remotehost '/home/scripts/script1.sh'
或者,您可以通过正确引用它来使用您最初尝试的方式:
su - gol -c "ssh gol@remotehost '/home/scripts/script1.sh'"
答案2
我已经设法通过添加引号来使其工作
su - gol -c "ssh gol@remotehost '/home/scripts/script1.sh'"
感谢菲利普的更新!
我还没有尝试过菲利普的解决方法,因为我通过添加引号来实现此目的。