K8S部署的前期准备工作,多台CentOS主机之间使用SSH免密登录。
实现原理
这里我们需要实现的一共有两个效果,一个是这五台CentOS主机之间任意两台之间都能使用ssh免密登录,另一个就是能够直接使用 ssh hostname 的方式登录而不需要使用 ssh account@ip_addr的方式登录。
rsa密钥对
一般来说我们的SSH使用的是RSA类型的密钥对,使用ssh-keygen默认生成的也是RSA类型的密钥对。一般来说会产生两个文件,分别是id_rsa和id_rsa.pub,其中前者是私钥,后者是公钥。私钥不能泄露,而公钥是放置在目标主机的authorized_keys文件中,从而实现免密登录的效果。
要实现五台CentOS主机之间任意两台之间都能使用ssh免密登录,只需要将这五台主机的id_rsa.pub都存放到一个authorized_keys文件中,然后再将这个文件复制到每一台主机上即可。
hosts文件
CentOS中的/etc/hosts文件中存放着主机名和对应的ip地址等信息,想要实现直接使用 ssh hostname 的方式登录的效果,只要在hosts文件中添加ip地址和对应hostname(主机名)即可。
操作步骤
安装启用ssh
# master和每台node节点上安装ssh
sudo yum install -y openssl openssh-server
# master和每台node节点上启动ssh并设置开机自启
systemctl start sshd.service
systemctl enable sshd.service
生成密钥对
# master和每台node节点上都生成ssh密钥,接下来一路回车
ssh-keygen

需要注意的是,这里提示输入的
passphrase相当于ssh密钥对的密码,不输入的话直接回车跳过即可,输入了之后,每次使用ssh免密登录的时候会再要求输入passphrase以保证安全。
# 将每台node节点的id_rsa.pub复制到master上面,注意要重新命名避免覆盖
scp /home/tinychen/.ssh/id_rsa.pub tinychen@192.168.100.50:/home/tinychen/.ssh/node5*
# 在master上使用cat命令将master和所有node节点的id_rsa.pub追加到authorized_keys中
cat id_rsa.pub >> authorized_keys
cat node51 >> authorized_keys
cat node52 >> authorized_keys
cat node53 >> authorized_keys
cat node54 >> authorized_keys
配置sshd_config
# 编辑master的ssh配置文件,去掉红圈中三项前面的#使其生效
sudo vim /etc/ssh/sshd_config

编辑hosts
# 编辑master节点的/etc/hosts文件,追加ip地址和对应的主机名,使得能够直接使用ssh+主机名的方式登录
sudo vim /etc/hosts
192.168.100.50 master50
192.168.100.51 node51
192.168.100.52 node52
192.168.100.53 node53
192.168.100.54 node54
复制master的配置文件
# 将master节点的ssh配置文件复制到每一个节点上
# 这里必须使用root账户,否则权限不足
sudo scp /etc/ssh/sshd_config root@192.168.100.51:/etc/ssh/sshd_config
sudo scp /etc/ssh/sshd_config root@192.168.100.52:/etc/ssh/sshd_config
sudo scp /etc/ssh/sshd_config root@192.168.100.53:/etc/ssh/sshd_config
sudo scp /etc/ssh/sshd_config root@192.168.100.54:/etc/ssh/sshd_config
# 将master节点的authorized_keys文件复制到每一个节点上
scp /home/tinychen/.ssh/authorized_keys tinychen@192.168.100.51:/home/tinychen/.ssh/authorized_keys
scp /home/tinychen/.ssh/authorized_keys tinychen@192.168.100.52:/home/tinychen/.ssh/authorized_keys
scp /home/tinychen/.ssh/authorized_keys tinychen@192.168.100.53:/home/tinychen/.ssh/authorized_keys
scp /home/tinychen/.ssh/authorized_keys tinychen@192.168.100.54:/home/tinychen/.ssh/authorized_keys
修改ssh文件权限
# 对master和每一个node节点都进行ssh相关文件权限的修改
sudo chmod 700 /home/tinychen/.ssh/
sudo chmod 600 /home/tinychen/.ssh/*
验证效果
需要注意的是,第一次ssh登录的时候,因为known_hosts文件里面没有保存这台主机的对应信息,我们需要输入yes才能登录,之后便不再需要。


此外,如果使用ssh+主机名的方式登录,两台主机必须是使用的同一个用户,这里我使用的是tinychen用户,由于我已经在ssh的配置文件中修改了配置允许ssh使用root账户登录,因此这里我们使用管理员账户tinychen,如果有需要了再切换到root账户,保证安全性
补充
# 如果想要实现root账户之间的ssh免密登录,将.ssh文件夹整个复制过去即可
rm -rf /root/.ssh/
cp -r /home/tinychen/.ssh/ /root/
chmod 700 /root/.ssh/
chmod 600 /root/.ssh/*