ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS 6.6为例。
管理机器外网IP10.0.0.61(内网172.16.1.61) 服务器外网10.0.0.31,端口52113,内网172.16.1.31
(1)首先在所有机器上批量创建管理用户。
[root@m01 ~]#useradd oldgirl
[root@m01 ~]#echo 123456|passwd --stdin oldgirl
[root@m01 ~]#id oldgirl
(2)所有机器均切换到管理用户,并创建密钥对。
[root@m01 ~]#su – oldgirl
[oldgirl@m01 ~]$ssh-keygen -t dsa # -t指定秘钥类型,默认为rsa,连续按三个回车键
Your identification has been saved in /home/oldgirl/.ssh/id_dsa
Your public key has been saved in /home/oldgirl/.ssh/id_dsa.pub
[oldgirl@m01 ~]$pwd
/home/oldgirl
[oldgirl@m01 ~]$ll .ssh/
-rw------- 1 oldgirl oldgirl 668 Mar 24 19:40 id_dsa
-rw-r----- 1 oldgirl oldgirl 601 Mar 24 19:40 id_dsa.pub 锁
或者使用下面的命令,非交互式一键创建密钥对
1、ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
2、[oldgirl@backup ~]$ echo -e "\n"|ssh-keygen -t dsa -N ""
(3)分发秘钥(锁)给需要管理的机器
[oldgirl@m01 ~]$ ssh-copy-id -i .ssh/id_dsa.pub "-p 52113 oldgirl@172.16.1.31" 注意这里是内网网段,端口已修改为52113。这里的拷贝仅仅针对公钥,它不会发送私钥。另外也可以使用scp -P去远程复制。
如果端口没有做修改,那么可以直接使用[oldgirl@m01 ~]$ssh-copy-id -i .ssh/id_dsa.pub oldgirl@10.0.0.31,这里是外网网段。
(4)分发完秘钥之后,可以去客户机(服务器)去查看公钥信息及权限
[oldgirl@nfs01 ~]$ll .ssh/
-rw------- 1 oldgirl oldgirl 601 Mar 24 19:56 authorized_keys #权限为600,传过来的共要文件更名为authorized_keys,这个是在ssh配置文件(/etc/ssh/sshd_conf)设置的。(5)测试:远程使用命令查看服务器网卡
[oldgirl@m01 ~]$ssh -p52113 oldgirl@172.16.1.31 /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:85:5E:85
inet addr:10.0.0.31 Bcast:10.0.0.255 Mask:255.255.255.0
至此,初步实现使用ssh公钥实现免批量分发管理服务器。