如何在远程主机上使用 systemctl 为非交互式命令指定密码?

如何在远程主机上使用 systemctl 为非交互式命令指定密码?

这就是我想做的。我有一组分布在多个主机上的服务的 .service 文件。我想编写一个可以启动或停止所有服务的 shell 脚本,而无需在运行脚本时为每个主机输入 root 密码。

因此,例如,该脚本将执行如下命令:

systemctl -H host1 start service1.service

我看到有一个 --no-ask-password 选项,但这是不同的,因为它不是向操作系统进行身份验证来运行 systemctl,而是在服务单元请求密码时要求(或不提供)密码。

换句话说,在没有其他身份验证方法可以自动对不同主机上的同一用户进行身份验证的情况下,我想尝试指定密码(例如,如果有 -P {passwd} 选项)。

有人对我如何实现这一目标有想法吗?

答案1

“在命令行上输入密码”是一个众所周知的坏主意。ssh可以处理这个。

man阅读由 制作的许多页面man -k ssh

然后,一旦您熟悉ssh并运行了ssh-add

阅读以将您的身份man ssh-copy-id复制到每个客户端节点上。sshroot

现在,ssh -l root client1 systemctl ...您可以使用。

阅读man ssh_config以进一步实现自动化。

添加别名,例如

alias c1="ssh -l root client1"
# usage:  c1 systemctl ...
#
 alias c1sys= "ssh -l root client1 systemctl ..."

给你的~/.bashrc.

相关内容