实例:我遇到的问题,莫名其妙生产环境服务器的root用户被禁止远程登录,公司领导非常着急,寻问情况,并且服务器是作为sftp服务器与某银行对接使用的,非常重要,根据开发回复的问题,我开始进行解决。
问题归纳:
1、root用户无法登录
2、sftp无法登录
3、开发回复所有用户无法登录。
解决过程:
1、尝试root登录,访问被拒绝。
2、sftp登录,闪退。无法登录
3、普通用户可以登录。
重现问题:使用自己之前创建的普通用户登录,登录成功,使用普通用户su - root登录到root。登录成功。
使用同一局域网中的另外一台服务器,进行测试访问,发现故障,sftp用户访问闪退
如下:sftp sftp_user@HOST
sftp Connection closed
无法出现sftp登录界面
首先解决root无法登录的问题
[root@iZbp1ir684nnmky1uumf3bZ ~]# vim /etc/ssh/sshd_config
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
# override default of no subsystems
Subsystem sftp internal-sftp
#Subsystem sftp /usr/libexec/openssh/sftp-server
**# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server**
PermitRootLogin yes
UseDNS no
AddressFamily inet
SyslogFacility AUTHPRIV
PasswordAuthentication yes
AllowGroups root ssh-users sftp-users
Match Group sftp-users
ChrootDirectory /home/sftp_root
AllowTcpForwarding no
ForceCommand internal-sftp
如上显示,root用户是被允许远程登录的,但是root却无法远程登录,我们需要在AllowGroups 后面加上root,否则root用户就会被禁止远程登录。
至于sftp无法登录的问题,我们需要把
Subsystem sftp /usr/libexec/openssh/sftp-server
更改为
Subsystem sftp internal-sftp
在最后一行添加上
ForceCommand internal-sftp
随后重启服务即可。
service sshd reload
或
sysemctl reload sshd
不要执行restart,或者stop
否则可能会无法登录。