Centos7配置ssh免密登录群发

时间:2021-08-01 03:26:47

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

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

  

 [zhiwei@zhiwei1 ~]$ ps -Af|grep sshd;
root : ? :: /usr/sbin/sshd -D
root : ? :: sshd: zhiwei [priv]
zhiwei : ? :: sshd: zhiwei@pts/
zhiwei : pts/ :: grep --color=auto sshd

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

[zhiwei@zhiwei1 ~]$ yum list installed | grep ssh
libssh2.x86_64 1.4.-.el7 @anaconda
openssh.x86_64 .4p1-.el7 @anaconda
openssh-clients.x86_64 .4p1-.el7 @anaconda
openssh-server.x86_64 .4p1-.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免密登录卡在这个地方卡了半天。。。。。

搞定~