直接上方法:禁用系统的selinux功能,命令#setenforce0,但重启系统,selinux仍然启用。根治方法:更改SElinux的配置文件/etc/selinux/config,修改SELINUX=disabled。(配置文件中有说明),重启机器。然后在试试?PuTTY登录界面出现了那渴望已久的"Enterpassphrase for key...:",输入密钥的指纹,成功进入。
下面听我慢慢道来。
学习Linux也有段时间了,但一直在弄些服务器的搭建和配置。想来,由于没经验,应聘一些Linux系统运维的工作,总是被拒绝(倒是那次杭州淘宝网的IDC值班运维的offer让我高兴了一阵子,终究因为当时还大三,没有办法全职,最终只能作罢,现在想来实在可惜)。所以我打算,对应工作实战,一步一步来实践。弄到ssh这里时,实在是将了我一军。putty这个sshclient forwindows还是挺好的,至少很多人用并且评价不错。简单,但同时功能单一。有利就有弊,所以putty配套的还有puttygen,全称puttykey generator,也就是putty密钥产生器。同时还有配套的PSFTP、PSCP等。
怎么在Windows下远程登录Linux(我的是CentOS)?
1、配置Linux里的sshd,/etc/ssh/sshd.conf,修改配置文件,密钥位数、ssh版本、passwd认证等。
2、生成rsa密钥,#ssh-keygen -b 1024-t rsa
3、使用PSFTP下载私钥id_rsa至本地。
4、将下载的私钥导入puttygen然后保存私钥为putty使用的ppk文件。
5、设置putty,制定Auth中的private keyfile,然后登录即可。
一开始我完全是按照步骤来的,思路也很清晰,先生产然后下载然后导入更改格式,最后认证即可。但一看是的三四天,我将这一过程试了不下10遍,终究不行。还试了网上网友说的各种更改设置,都无济于事。并且还用了本地生成,然后上传公钥的方法(这种方法最安全,推荐,因为公钥被盗也无所谓)。最终都是登录无门。
然后又再网上翻天覆地的找各种解决方法,都无济于事。这时的我对很多网友实在很无语,自己没有亲自实践就在网上随便乱贴东西或是copy别人的东西。这时我只能靠自己了。
其实,我从一开始就考虑是不是iptables的缘故,但是自己记得当时在设置iptables时已经开放了22端口啊。苍天,我只好先:serviceiptables stop。但是仍然是无用啊。
最后想到是不是上级目录和文件权限的问题,然后又chmod修改权限,仍然无解。
最后,想到一下SElinux,看书时(那个南非蚂蚁大哥写的)有提到Selinux这个新的安全工具。想来应该是它在作怪,寻找/etc下发现selinux目录,打开发现config和sestorecron.conf,恍然大悟,修改之保存。然后又在网上搜索看了看selinux的详细,果然是它在作怪。最后按本文开头介绍的方法成功完成SSH2的RSA认证。
其实,中间的过程做的还有很多,比如查看/var/log下的登录日志,其实还是在这里找到了第一丝线索,但由于英文水平和系统知识都不够火候,以至于费了老大功夫。其实在开始PUTTY失败是我还试了很多其他的SSH客户端,但同样不行,最终锁定是服务器设置的问题。
以上只是介绍了整个过程,中间有什么不明白的百度一下就好。如果看的人多,后期再把完整的过程写了。