在远程主机上使用 ssh,但在以 root 身份运行的本地主机上切换用户

在远程主机上使用 ssh,但在以 root 身份运行的本地主机上切换用户

我有一个以 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'"

感谢菲利普的更新!

我还没有尝试过菲利普的解决方法,因为我通过添加引号来实现此目的。

相关内容