本以为Putty通过SSH密钥登录CentOS7应该是一件很简单的事情,谁想到整整折腾了3天,其中虽然搜索了无数前人的经验,不能说没有,但真的没有一个能说全的,结果遇到无数的坑,说多了都是泪啊!!!
现在把自己的过程记录下来,真希望下次不会再这么受累了!
首先声明一点,我写了的一定要改,没写的一个字也不要去改!网上很多贴子不能说不对,但绝对对CentOS7来说就是一个一个的坑,如果完全照做绝对死的很惨!!!
1、开始了,安装软件不说了,需要注意的一点是/etc/ssh
下面有两个配置文件,一个ssh_config
,一个sshd-config
,后一个是针对SSH Server的,也就是我们需要改的,别粗心搞错了,别问我是怎么知道的…
2、生成密钥对,别用Putty带的那个工具,因为它生成的文本有很多多余的字符和换行符,Linux的SSHD不认!!!这里又浪费了我无数时间,直到我分析/var/log/secure
日志文件才发现这个问题。用Linux的ssh-keygen
生成密钥对,把公钥文件复制为~/.ssh/authorized_keys
,权限设置成644。私钥文件考到主机,通过Putty密钥转换工具转换成Putty格式的密钥文件。
3、重要的一步!!!运行chcon -v --type=ssh_home_t authorized_keys
,这很重要!!!,很多帖子说关闭selinux,让我浪费了数天时间也无法成功,就是因为关闭了真的无法通过密钥认证,在分析了日志文件和查找了无数资料后,我终于认识到这一点,结果不出半小时我就成功了。如果你关掉了,立马打开!!!
4、修改/etc/ssh/sshd_config
,按我说的改,一定成功!!!
可以增加LogLevel DEBUG3可以看到日志文件里更多的消息,遇到问题有用。我前面一直毫无进展就是因为只看网上的资料,没有分析日志然后去针对性的查找解决办法,说真的,很多人的帖子应该是针对他当时的版本,在我的最新的centos上就是坑。
PermitRootLogin yes #允许root用户远程登陆,可以是no
StrictModes yes
PubkeyAuthentication yes #必须打开密钥认证
PasswordAuthentication yes #远程密钥登录成功后可以是no,不然没法远程了
ChallengeResponseAuthentication no #必须是no
UsePAM yes #必须打开,很多资料说no,但在最新的centos上no真的连不上,这里又花了我N多时间
就改这么多,够了。
5、putty的登录用户设置成你.ssh
目录所在的用户名,如果需要多个用户,那么authorized_keys
文件需要在每个用户的.ssh
目录下面都复制一个。
总结起来就这么一点,可是花了我3天时间,走了无数弯路,填了无比多的坑,终于找到了正确的SSH远程登录的解锁方式,成功的那一瞬间我简直要哭了!!!最大的教训就是别乱搬别人的做法,linux真特么不是windows,每个系列每个版本都不一样!!!一定要针对自己的系统、软件版本,学会分析日志,查找问题,不然纯属浪费精力浪费时间,瞎费工夫!!!