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

问题:

我试图为多个服务器禁用SSH密码validation。 这意味着我必须修改sshd_config文件。 从

#PasswordAuthentication yes 

 PasswordAuthentication no 

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

假设你可以做:

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

其他说明:

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

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

我更喜欢文本replace命令来完成这项工作

看看Puppet,Ansible或cfengine等configurationpipe理工具。 他们从长远来看是有帮助的。

对于一次性的,你可以使用Augeas,这使得这个改变非常简单,甚至sed ,这是在大多数系统上没有进一步安装。

 sed -is/\#PasswordAuthentication\ yes/PasswordAuthentication\ no/ /etc/ssh/sshd_config 

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

 ssh user@server sed ......