先看一下这2篇文章:
一、服务器生成ssh-key
1.生成密钥
ssh-keygen -t rsa
回车后会在 ~/.ssh/ 下生成两个文件:id_rsa 和 id_rsa.pub,这两个文件是成对出现的
2.把自己的公钥放到本机某用户的authorized_keys文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #修正权限 chmod 600 ~/.ssh/authorized_keys
3.重启SSH服务
service sshd restart
4.测试免密登录本机
ssh localhost # 或 ssh 127.0.0.1
(发现并没有成功,还是需要输入密码)
二、遇到的问题:免密失败,还需输入密码
解决这个问题,需要做二件事:
1、检查AuthorizedKeysFile配置是否启用authorized_keys
$ cat /etc/ssh/sshd_config | egrep AuthorizedKeysFile #AuthorizedKeysFile .ssh/authorized_keys
解决:
$ sudo vim /etc/ssh/sshd_config
找到这几行,把注释解开:
#RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys
2、查看系统安全日志,定位问题
执行 sudo cat /var/log/secure 查看系统的安全日志,然后在安全日志中看到SSH登录过程中提示了如下错误:
找到问题:Authentication refused: bad ownership or modes for directory /home/root
后面的目录代表权限不匹配
解决:
执行如下:
chmod 700 /root chmod 700 ./.ssh chmod 600 ~/.ssh/authorized_keys
PS:SSH进行认证的过程中除了对用户目录有权限要求外,对 .ssh 文件夹和 authorized_keys 文件同样也要限制。
(可选)重启SSH服务
$ service sshd restart
参考: