我有一个以 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 身份运行它,因为这个脚本还有其他脚本。
问题是默认情况下 SSH 将尝试使用
root
的私钥,因为客户端以 root 身份运行。如果您仍想以 root 身份运行但想使用 gol 的私钥,那么这可能是可能的,因为 root 可以访问所有内容。所以要以 root 身份调用 ssh 但使用gol
的私钥,您只需要告诉 ssh 私钥在哪里。我不知道你的系统,但它很可能在这里:您可以告诉 ssh 使用哪个私钥:
或者,您可以通过正确引用它来使用您最初尝试的方式:
我设法通过添加引号来完成这项工作
su - gol -c "ssh gol@remotehost '/home/scripts/script1.sh'"
感谢菲利普的更新!
我没有尝试过 Philip 的解决方法,因为我通过添加引号来实现这一点。