ansible控制非22端口服务器
对于linux服务器,SSH使用默认22端口暴露在外网不是很安全,最好改一下,然后有一个问题就抛出来了,ansible默认是以22端口去连接受控端的,改了端口之后ansible要做一些特殊配置,否则无法连接,下面来解决一下这个问题,开撸。
修改iptables
先说明一下,现在还没有改,还是22端口,我三个服务器端口用的都是24680,先把iptables开了再说,我现在要向受控端传输的iptables配置文件都已经修改好的,拿过去直接用即可。
[root@ansible ~]# ansible aliyun -m copy -a "src=/config/iptables/iptables dest=/etc/sysconfig/iptables backup=yes"
重启iptables,看结果。
[root@ansible ~]# ansible aliyun -m service -a "name=iptables state=reloaded"
[root@ansible ~]# ansible aliyun -m shell -a "iptables -L -n | grep 24680 | grep -v grep"
修改ssh端口,查看结果,重启服务
[root@ansible ~]# ansible aliyun -m shell -a "sed -i 's#\#Port 22#Port 24680#g' /etc/ssh/sshd_config"
[root@ansible ~]# ansible aliyun -m shell -a "cat /etc/ssh/sshd_config | grep 24680"
[root@ansible ~]# ansible aliyun -m service -a "name=sshd state=restarted"
ansible配置
现在去检查一下他们是否还是存活状态,使用ping模块,这个ping和你们所以理解的ping是不一样的,ansible的ping指的是测试能否连接到受控端,如果连接失败,就代表挂了,如图所示。
[root@ansible ~]# ansible aliyun -m ping
批量分发秘钥
从分发秘钥开始吧,因为端口改了分发秘钥的命令和以前也不一样了,要加上端口号了,直接贴出来了。
#!/bin/bash
for aliyun in ip
do
sshpass -ppasswd ssh-copy-id -i /root/.ssh/id_dsa.pub "-p24680 -o StrictHostKeyChecking=no root@"$aliyun""
done
修改hosts文件
修改ansible的host文件,将主机端口加到ip后面即可。
[root@ansible ~]# vim /etc/ansible/hosts
[aliyun]
1.1.1.45 ansible_ssh_port=24680
1.1.1.166 ansible_ssh_port=24680
1.1.1.41 ansible_ssh_port=24680
再次ping,绿了,一切恢复正常,可以继续安装服务了,结束。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。