问题:
我正在尝试禁用多台服务器的 SSH 密码验证。这意味着我必须修改 sshd_config 文件。从
#PasswordAuthentication yes
到
PasswordAuthentication no
我真的不想一个一个地做。有什么方法可以用一个命令在多台服务器上分发/修改配置文件吗?
您可以做出的假设:
- 这些服务器具有相同的操作系统
- 我可以同时向多个服务器广播 SSH 命令
其他说明:
我设置配置文件来监听每个服务器上的不同地址和/或端口。
因此,无法通过从中央服务器下载更新的配置文件来完成此操作。
我更喜欢使用文本替换命令来完成工作
答案1
研究一下 Puppet、Ansible 或 cfengine 等配置管理工具。从长远来看,它们是有帮助的。
对于一次性操作,您可以使用 Augeas,这使得这种更改非常容易,甚至sed
在大多数系统上都存在,无需进一步安装。
sed -i s/\#PasswordAuthentication\ yes/PasswordAuthentication\ no/ /etc/ssh/sshd_config
这可以通过一个简单的 ssh 命令发送:
ssh user@server sed ......