由于linux上的openssh的版本已太老,服务器要确保安全必须对openssh升级,在selinux开启的情况下openssh升级到9.0后ssh连接有可能提示Access Denied,这种情况下一般是selinux拦截了sshd。最简单直接解决ssh无法连接的方法就是关闭selinux,但是selinux对服务器的安全非常重要,一般情况下不要关闭。那在selinux开启的情况下又怎么处理?
解决方法:先查看系统实时日志,tail -f /var/log/messages,一般有报错提示,“localhost sshd[19802]: error: Could not get shadow information for admin...”,这个要先去/etc/ssh/sshd_config下把UsePAM改为yes,然后到/etc/pam.d/sshd下把内容修改为
auth required pam_sepermit.soauth include password-authaccount required pam_nologin.soaccount include password-authpassword include password-authsession required pam_selinux.so closesession required pam_loginuid.sosession required pam_selinux.so open env_paramssession optional pam_keyinit.so force revokesession include password-auth
这是因为linux系统中pam_stack.so这个库已经不再使用,需要修改/etc/pam.d/sshd才行。修改完成重启sshd即可。
附上ssh连接成功截图
注:centos6和7都是这么操作,不要往sshd_config更改别的或增加别的配置,会导致重启异常。重启后连接不上如centos6执行命令service sshd restart后连接中断这个是sshd关闭后重启失败,需要到虚拟机中重新启动就可以了。
来源地址:https://blog.csdn.net/u011439436/article/details/128020734