公司里有N台服务器需要经常登录,每次ssh的时候都要输入密码实在太不爽了,今天有空一口气全部改为公钥/私钥认证,登录再也不用任何密码了。
实现步骤:
1.在你的自己的机器下面使用ssh-keygen命令来实现创建公钥
使用 ssh-keygen -t rsa 来创建密钥,程序会问你存放的目录,如果不需要修改,直接回车两次即可
2.将你~/.ssh目录中的id_rsa.pub这个文件拷贝到你要登录的服务器的~/.ssh目录中,然后再运行以下命令来将公钥导入到~/.ssh/authorized_keys这个文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,注意是管道符是 >>
另外要注意请务必要将服务器上
~/.ssh权限设置为700
~/.ssh/authorized_keys的权限设置为600
这是linux的安全要求,如果权限不对,自动登录将不会生效
完毕之后,退出服务器的登录,再使用ssh登录,你就会发现服务器不会再向你询问密码了.
补充:
有读者提出拷贝公钥文件到服务器上这个过程可以用ssh-copy-id命令来完成,下面是命令使用列表
默认用法:
ssh-copy-id user@server
自定义用法:
ssh-copy-id -i 公钥文件路径 user@server
ssh-copy-id -p 服务器SSH服务端口 user@server
文献出自:http://be-evil.org/linux-ssh-login-without-using-password.html
-----------------------------------------------------------------------------------------------------
另外,鄙人遇到过这样的情况:当~/.ssh的档案目录的(SELinux)security context与预期不符时亦无法实现远程免密码登录,解决办法是"恢復档案目录的预设的security context" —— 命令:restorecon -R -v .ssh