为什么要做免密登录
对于运维来说,主机间的免密登录是有着重要意义的,其内涵的意义主要有以下两方面:
- 作为一个运维,常要通过一台主机管理其他很多台主机,如果单纯地使用ssh来连接,每执行一次ssh都需要输入一次密码,这样就对我们通过脚本管理其他主机增加了困难
- 通常使用密码的童鞋即使有意识的加强密码的安全性,为了日常使用考虑,密码也不会设定得过于变态,这样就为主机的安全留下了隐患,而如果是密钥的话,被破译的可能性趋近于零
怎么做免密登录
创建密钥对
ssh-keygen -t rsa
编辑sshd服务配置文件
vim /etc/ssh/sshd_config
# 禁止密码登录认证
PasswordAuthentication no
修改公钥
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
将私钥妥善保存并重启sshd服务
systemctl restart sshd
将密钥对拷贝到远端
scp -r /root/.ssh 192.168.59.102:/root
修改远端的sshd服务配置文件
ssh 192.168.59.102
vim /etc/ssh/sshd_config
systemctl restart sshd
验证
ssh登录远端,看看是否需要输入密码
自动部署
#!/bin/bash
# 脚本用途:配置主机间免密登录
# 注意事项:远端ip地址与密码各不相同,请先根据自身情况修改
passwd(){
ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ''
sed -i '65s/yes/no/g' /etc/ssh/sshd_config
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
yum install sshpass -y -q
sed -i 35a'StrictHostKeyChecking no' /etc/ssh/ssh_config
systemctl restart sshd
}
passwd
for i in {101..200}
do
sshpass -p "123" scp -r /root/.ssh "192.168.88.$i":/root
ssh "192.168.88.$i" "sed -i '65s/yes/no/g' /etc/ssh/sshd_config"
ssh "192.168.88.$i" "systemctl restart sshd"
done