Centos7配置ssh免密登录群发

  ssh免密登录是客户端发送自己的公钥到服务器。用公钥进行解密,自己生成的私钥进行加密。

  首先在客户端查看sshd服务是否启动

  

1 [zhiwei@zhiwei1 ~]$ ps -Af|grep sshd;
2 root       6983      1  0 08:21 ?        00:00:00 /usr/sbin/sshd -D
3 root      16949   6983  0 10:13 ?        00:00:00 sshd: zhiwei [priv]
4 zhiwei    16951  16949  0 10:13 ?        00:00:00 sshd: zhiwei@pts/0
5 zhiwei    16998  16952  0 10:14 pts/0    00:00:00 grep --color=auto sshd

  检查是否安装了有关ssh的三个软件包:openssh-server,openssh-client,openssh

[zhiwei@zhiwei1 ~]$ yum list installed | grep ssh
libssh2.x86_64                          1.4.3-12.el7                   @anaconda
openssh.x86_64                          7.4p1-16.el7                   @anaconda
openssh-clients.x86_64                  7.4p1-16.el7                   @anaconda
openssh-server.x86_64                   7.4p1-16.el7                   @anaconda

 

  然后查看有没有ssh-keygen命令 whick ssh-keygen;

  之后生成秘钥:

ssh-keygen -t -rsa -P  '' -f  ~/.ssh/id_rsa 

  其中-t参数是使用的算法名字,-P参数为设置密码,这里密码为空,也可以不写,-f参数是设置秘钥生成路径。

  生成完之后,将id_rsa.pub分发到各个服务器的~/.ssh/下,并将其追加到authorized_keys中(没有这个文件可以创建)。

  因为博主要配置的服务端比较多,为了省事,可以用类似的脚本:

#/bin/bash
if [[$# -lt 1]];then echo no params;exit;fi
p=$1
q=$2
for((i=242;i<=250;i=$i+1));do
        scp -r $p zhiwei@192.168.118.$i:$q
done;

  可以直接将id_rsa.pub群发到各台服务器。然后用另一个脚本,类似这个:

#/bin/bash
params=$@
i=1
for((i=242;i<=250;i=$i+1));do
        echo 192.168.118.$i======================================================
        ssh zhiwei@192.168.118.$i "$params"
        echo 192.168.118.$i======================================================
done

 可以比较方便的将id_rsa.pub里面的内容追加到authorized_keys。

 然后坑来了~

 在Centos7中,.ssh的权限最好是711,或者700,只有当前用户能看到,其他用户最多有个执行权限。

 .ssh里面的authorized_keys最好是600,最多644权限。而ubuntu可以不用这么搞。。。。(博主也不知道为啥,下面有知道的小伙伴可以留言)

 。。。。。今天配ssh免密登录卡在这个地方卡了半天。。。。。

 搞定~

 

原文地址:https://www.cnblogs.com/zhiweiXiaomu/p/11810547.html