配置ssh免密钥登陆多台从机
配置ssh免密钥登陆多台从机
在布置集群时常常需要通过ssh来登陆多台从机,如果用手动配置的办法去配置多台主机就会比较费时费力,本文通过简单的脚本来配置ssh登陆多台主机
主节点kube1的配置
配置主机名
在/etc/hosts 文件中输入各个机子的ip与主机名,随后将这份文件复制到各个主机的/etc/hosts文件中
cat >> /etc/hosts <<-EOF
10.173.38.49 kube5
10.173.38.48 kube4
10.173.38.47 kube3
10.173.38.46 kube2
10.173.38.45 kube1
EOF
10.173.38.45 是 主节点kube1的内网IP,其他节点的ip可通过ifconfig
查看。
创建一个工作目录,并命名为init_public_key
,随后进入该目录
mkdir init_public_key
cd init_public_key
创建 public_hostname 文件
cat > public_hostname <<-EOF
10.173.38.49 kube5
10.173.38.48 kube4
10.173.38.47 kube3
10.173.38.46 kube2
10.173.38.45 kube1
EOF
创建主机公钥匙
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub > $(pwd)/id_rsa.pub_kube1
创建从节点配置脚本set_public_key.sh,并添加执行权限
cat > set_public_key.sh <<-EOF
#!/bin/bash
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \
cat ~/id_rsa.pub_kube1 >> ~/.ssh/authorized_keys && \
mv /usr/local/ssh_config ~/.ssh/config && \
sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
chmod 655 .ssh/authorized_keys
hostnamectl set-hostname xxxxxx
cat public_hostname >> /etc/hosts
EOF
chmod +x set_public_key.sh
在
set_public_key.sh
文件中 的hostnamectl set-hostname xxxxxx
中的 ‘xxxxxx’,是你要设置的从节点的主机名。
创建 public_key_set.tar.gz ,用于传输到各个从节点
tar -zcvf public_key_set.tar.gz ./*
查看init_public_key 目录组成
[root@kube1 init_public_key]# tree ../init_public_key
../init_public_key
├── id_rsa.pub_kube1
├── public_hostname
├── public_key_set.tar.gz
└── set_public_key.sh
0 directories, 4 files
用scp命令,将 public_key_set.tar.gz拷贝至各个从节点的root用户home目录下
scp public_key_set.tar.gz root@kube2:/root/ &&
scp public_key_set.tar.gz root@kube3:/root/ &&
scp public_key_set.tar.gz root@kube4:/root/ &&
scp public_key_set.tar.gz root@kube5:/root/ &&
至此主节点的配置已完成,接下来我们用ssh来登陆各个从节点进行配置
从节点的配置(以kube2为例)
登陆kube2并解压文件
[root@kube1 init_public_key]# ssh kube2 # 第一次登陆需要密码登陆
[root@kube2 ~]# tar -zxvf public_key_set.tar.gz
./id_rsa.pub_kube1
./public_hostname
./set_public_key.sh
修改set_public_key.sh中的‘xxxxxx’为‘kube2’
[root@kube2 ~]# vim set_public_key.sh
#!/bin/bash
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \
cat ~/id_rsa.pub_kube1 >> ~/.ssh/authorized_keys && \
mv /usr/local/ssh_config ~/.ssh/config && \
sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
chmod 655 .ssh/authorized_keys
hostnamectl set-hostname kube2 # 修改这行 xxxxxx->kube2
cat public_hostname >> /etc/hosts
修改完后,直接执行 set_public_key.sh,即可完成将主节点kube1的公钥信息导入,并将自己主机名修改为kube2,以便后续主节点kube1可以通过ssh kube2
免密钥登陆kube2。
./set_public_key.sh
退出kube2,再登陆kube2,查看是否配置成功
[root@kube2 ~]# exit
登出
Connection to kube2 closed.
[root@kube1 ~]# ssh kube2
Last login: Fri Sep 19 14:12:02 2017 from 10.173.38.45
一般ssh 登陆的格式为
ssh user@Ip
在本文中我们默认的用户是root用户,使用ssh IP
的命令时,默认user用户为当前终端用户,即为root用户。
这样,我们就能以极快速配置各个从节点的ssh免密钥登陆了。其他从节点的ssh免密钥登陆也如kube2一样配置。