CentOS7配置集群SSH免密登录

目录

一、集群情况

二、修改/etc目录下的hosts文件,添加ip和主机名

三、配置SSH免密登录

       1. 先生成rsa密钥对

       2. 将公钥发到本机

       3. ssh免密登录一下集群所有服务器并exit

       4. 写一个xsync群发脚本

       5. 将 /home/kevin/.ssh文件分发到集群所有服务器


CentOS7和CentOS6的操作有很多都不一样,继之前写完7版本的修改ip、配置主机名、修改防火墙的操作后,这篇博客写一下7版本配置集群SSH免密登录的操作。

解决克隆虚拟机后Xshell连接不上的问题(CentOS6、CentOS7修改ip和主机名)

CentOS7查看和关闭防火墙的命令

一、集群情况

三台服务器,主机名和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免密配置完毕。

猜你喜欢

转载自blog.csdn.net/wx1528159409/article/details/85758810