目录
5. 将 /home/kevin/.ssh文件分发到集群所有服务器
CentOS7和CentOS6的操作有很多都不一样,继之前写完7版本的修改ip、配置主机名、修改防火墙的操作后,这篇博客写一下7版本配置集群SSH免密登录的操作。
解决克隆虚拟机后Xshell连接不上的问题(CentOS6、CentOS7修改ip和主机名)
一、集群情况
三台服务器,主机名和ip分别是:
es104 192.168.5.104
es105 192.168.5.105
es106 192.168.5.106
下面来配置es104这台服务器。
二、修改/etc目录下的hosts文件,添加ip和主机名
注意要用root用户权限才能修改
[kevin@es104 etc]$ sudo vi hosts
把原有的数据删除,添加数据如下(注意ip在前主机名在后,中间用Tab隔开)
192.168.5.104 es104
192.168.5.105 es105
192.168.5.106 es106
三、配置SSH免密登录
与CentOS6不同,/目录下没有.ssh这个隐藏文件,需要自己创建
1. 先生成rsa密钥对,并生成.ssh隐藏文件
[kevin@es104 /]$ ssh-keygen -t rsa
一路回车下去,发现在~目录下,生成了.ssh隐藏文件,
[kevin@es104 ~]$ ll -a
total 16
drwx------. 5 kevin kevin 131 Jan 4 19:10 .
drwxr-xr-x. 3 root root 19 Jan 4 02:39 ..
-rw-------. 1 kevin kevin 2588 Jan 4 19:05 .bash_history
-rw-r--r--. 1 kevin kevin 18 Aug 3 2017 .bash_logout
-rw-r--r--. 1 kevin kevin 193 Aug 3 2017 .bash_profile
-rw-r--r--. 1 kevin kevin 231 Aug 3 2017 .bashrc
drwxrwxr-x. 2 kevin kevin 19 Jan 4 19:21 bin
drwxrwxr-x. 2 kevin kevin 40 Jan 4 03:21 .oracle_jre_usage
drwx------. 2 kevin kevin 80 Jan 4 18:48 .ssh
里面有四个文件如下,生成公钥-私钥对成功
[kevin@es104 .ssh]$ pwd
/home/kevin/.ssh
[kevin@es104 .ssh]$ ll
total 16
-rw-------. 1 kevin kevin 397 Jan 4 09:52 authorized_keys
-rw-------. 1 kevin kevin 1679 Jan 4 05:31 id_rsa
-rw-r--r--. 1 kevin kevin 397 Jan 4 05:31 id_rsa.pub
-rw-r--r--. 1 kevin kevin 552 Jan 4 09:54 known_hosts
2. 将公钥发到本机
[kevin@es104 .ssh]$ ssh-copy-id 192.168.5.104
3. ssh免密登录一下集群所有服务器并exit
[kevin@es104 .ssh]$ ssh es104
[kevin@es104 ~]$ exit
[kevin@es104 .ssh]$ ssh es105
[kevin@es105 ~]$ exit
[kevin@es104 .ssh]$ ssh es106
[kevin@es106 ~]$ exit
[kevin@es104 .ssh]$
4. 写一个xsync群发脚本
ps:CentOS7里面没有rsync这个命令,需要安装,每台服务器都执行命令 yum install rsync -y ,安装rsync服务
(1)在~目录下创建bin目录,创建xsync脚本
#!/bin/bash
#此脚本用/bin/bash解释执行
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环分发到hadoop105和hadoop106主机中
for((host=105; host<107; host++)); do
echo ------------------- es$host --------------
rsync -av $pdir/$fname $user@es$host:$pdir
done
ps:CentOS7里面好像没有rsync命令,所以脚本用的scp -r命令,递归全部复制
(2)然后修改脚本的执行权限
[kevin@es104 bin]$ chmod 777 xsync
(3)最后分发bin目录及其中的xsync脚本
[kevin@es104 bin]$ pwd
/home/kevin/bin
[kevin@es104 bin]$ xsync /home/kevin/bin
在集群中其余服务器查看一下,发现~目录下已经有bin/目录和xsync分发脚本了,搞定!
5. 将 /home/kevin/.ssh文件分发到集群所有服务器
[kevin@es104 ~]$ xsync /home/kevin/.ssh
最后在任意一台服务器上,ssh 主机名,查看一下ssh免密登录是否配置成功,如果不需要输入密码,说明已经配置成功
[kevin@es104 ~]$ ssh es105
Last login: Fri Jan 4 19:05:23 2019 from 192.168.5.104
[kevin@es105 ~]$ exit
logout
Connection to es105 closed.
[kevin@es104 ~]$ ssh es106
Last login: Fri Jan 4 19:05:37 2019 from 192.168.5.104
[kevin@es106 ~]$ exit
logout
Connection to es106 closed.
[kevin@es104 ~]$
至此,CentOS7的集群SSH免密配置完毕。