一、问题:
假如我们现在有两台机器:PCA和PCB,现在想要让PCA不用输入密码就能够进行访问PCB。
二、方法和原理:
可以使用ssh-keygen -t rsa (注意:一路回车即可)在PCA上生成private和public密钥,将生成的public密钥拷贝到远程机器PCB上后,
就可以使用ssh命令无需密码登录到另外一台机器PCB上。
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法【默认是DSR算法】,
该工具作为linux系统的远程管理是非常安全的。
三、实验步骤:
1、登录PCA
2、ssh-keygen -t rsa,将会生成公钥和私钥文件id_rsa.pub和id_rsa
【一直回车下去,这两个文件应该在/home/$USER/.ssh下面】
3、将id_rsa.pub 文件复制到PCB机器的 .ssh 目录下,并保存为authorized_keys
可以使用:ssh-cop-id命令会将指定的公钥文件复制到远程计算机。
ssh-copy-id -i id_rsa.pub test@192.168.127.151
4.大功告成,从PCA机器登录PCB机器的目标账户,不再需要密码了。
5、设置文件和目录权限【这一步可以省略,但是为了安全起见,加上也是有必要的~】
设置authorized_keys权限
chmod 644 authorized_keys
设置.ssh目录权限
chmod 700 -R .ssh
6、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。
(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。
报错:
The authenticity of host '192.168.127.150 (192.168.20.150)' can't be established.
RSA key fingerprint is 6a:37:c0:e1:09:a4:21:8d:68:d0:ca:21:20:94:be:11
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.127.150' (RSA) to the list of known hosts.
root@192.168.127.150's password:
Permission denied, please try again.
root@192.168.127.150's password:
Permission denied, please try again.
root@192.168.127.150's password:
Permission denied (publickey,gssapi-with-mic,password).
7、如果ssh想免密码登录自己,只需将在.ssh文件下执行 copy id_rsa.pub authorized_keys即可。
备注:
1、如果添加公钥后,还是无法访问,可能是PCA主机上面的一个文件known_hosts中已经存在PCB的ip信息,删除重新访问即可。
2、如果以上方法尝试过后还是不行,可能是因为登录失败次数过多被锁定,这个时候就需要去看看系统日志了/var/log/messages,将之前的锁定信息日志删除就可以了。
祝大家好运!!!
四、快捷方式:
假如A登录B,那么需在A上操作:
1、生成密钥对,命令如下:
ssh-keygen 一路回车即可。
2、将A的密钥对添加到B的authorized_keys中,命令如下:
ssh-copy-id B
本文转自lzf0530377451CTO博客,原文链接: http://blog.51cto.com/8757576/1792238,如需转载请自行联系原作者