使用 SSH 更改多个服务器上的配置文件

Shi*_*i.J 2 ssh

问题:

我正在尝试为多个服务器禁用 SSH 密码身份验证。这意味着我必须修改 sshd_config 文件。从

#PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)

PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

我真的不想一件一件的去做。有什么方法可以使用单个命令在多个服务器上分发/修改配置文件?

您可以做出的假设:

  • 这些服务器具有相同的操作系统
  • 我可以一次向多台服务器广播 SSH 命令

其他注意事项:

我将配置文件设置为在每个服务器上侦听不同的地址和/或端口。

所以这不能通过从中央服务器下载更新的配置文件来完成。

我更喜欢使用文本替换命令来完成这项工作

Sve*_*ven 10

查看配置管理工具,如 Puppet、Ansible 或 cfengine。从长远来看,它们是有帮助的。

对于一次性使用,您可以使用 Augeas,这使得这种更改非常容易,甚至sed可以在大多数系统上使用而无需进一步安装。

sed -i s/\#PasswordAuthentication\ yes/PasswordAuthentication\ no/ /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)

这可以通过一个简单的 ssh 命令发送:

ssh user@server sed ......
Run Code Online (Sandbox Code Playgroud)