SSH无密码登录使用公钥和私钥
linux 下可以用ssh-keygen生成公钥私钥对,下面我以centos为例。
机器A 172.16.16.129
机器B 172.16.16.130
现在想机器A通过ssh免密码登录到机器B。
1、在机器A下生成公钥私钥对。
root#ssh-keygen -t rsa
后面可加-P表示密码,-P ‘’ (-P后面两个单引号)表示空密码,也可以不用-P参数,这样就要三个回车,用-P就一次回车。
它在/root/下生成.ssh目录,.ssh下有 id_rsa和id_rsa.pub 私钥/公钥
2、把机器A下的id_rsa.pub复制到机器B下,在机器B的.ssh/authorized_keys文件里,用scp复制(windows下可用图形化工具winscp软件)。
root#scp .ssh/id_rsa.pub root@172.16.16.130:/root/id_rsa.pub
3、机器B把从A机复制的id_rsa.pub添加到.ssh/authorized_keys文件里
root#mkdir .ssh
root#chmod 0700 .ssh // (需要输入密码,注意必须将.ssh的权限设为700)
root#cat id_rsa.pub >> .ssh/authorized_keys // (将id_rsa.pub的内容追加到 authorized_keys 中, 注意不要用 > ,否则会清空原有的内容,使其他人无法使用原有的密钥登录)
root#chmod 0600 .ssh/authorized_keys // (authorized_keys 的权限要是 600)
第一次登录需要输入yes
root#ssh -i id_rsa root@172.16.16.130
end
现在机器A可以无密码登录机器B了。
小结:用来登录的机器使用私钥,被登录的目标机器使用公钥。上面用的是 rsa算法的公钥/私钥对,当然也可以用 dsa(对应的文件是 id_dsa\id_dsa.pub)其他配置同上。
备注:SSH命令指定密钥登录远程主机,用-i指定私钥,-p指定端口,命令如下:ssh -i ~/.ssh/id_rsa root@172.16.16.130 -p 22