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免密登录卡在这个地方卡了半天。。。。。
搞定~
和所有以梦为马的诗人一样,随处可栖--