配置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一样配置。

posted @ 2017-09-22 14:26  ethan2lee  阅读(516)  评论(0编辑  收藏  举报