云服务器 Linux SSH无法远程登录问题排查指引
SSH 登录关联因素示意图
无法登录常见现象及处理办法
针对前述不同因素,常见的问题现象及处理办法说明如下:
客户端问题
中间网络问题
PAM 安全框架相关问题
Linux 系统环境配置问题
SSH 服务及参数配置问题
SSH 服务关联目录或文件配置问题
SSH 服务密钥配置问题
客户端问题
客户端无法正常登录时,建议先使用不同的 SSH 客户端基于相同账户信息进行登录测试。如果能正常登录,则判断是客户端配置问题,需要对客户端配置或软件运行情况做排查分析。
中间网络问题
客户端无法正常通过 SSH 连接服务器时,先通过如下方式进行 telnet 端口测试,判断是否是中间网络异常所致:
telnet <服务器 IP>
正常情况下,如下图所示,会返回服务端 SSH 软件版本号:
如果端口测试失败,则可以参阅如下文档针对客户端到服务器之间的网络做进一步排查分析:
ping 丢包或不通时链路测试说明
能 ping 通但端口不通时端口可用性探测说明
网络异常时抓包操作说明
PAM 安全框架相关问题
Linux 系统的 PAM 安全框架,可以加载相关安全模块,对服务器的账户策略、登录策略等进行访问控制。如果相关配置存在异常,或触发了相关策略,就可能会导致 SSH 登录失败。与PAM 安全框架相关的常见案例如下:
SSH 登录时出现如下错误:pam_listfile(sshd:auth): Refused user root for service sshd
SSH 登录时出现如下错误:requirement "uid >= 1000" not met by user "root"
SSH 登录时出现如下错误:Maximum amount of failed attempts was reached
SSH 登录时出现如下错误:login: Module is unknown
Linux 系统环境配置问题
Linux 内的系统环境(比如中毒、账户配置、环境变量配置等)如果出现异常,也可能会导致 SSH 登录失败。与 Linux 系统环境相关的常见案例如下:
SSH 登录时出现如下错误:ssh_exchange_identification: read: Connection reset by peer
中毒导致 SSH 服务运行异常,出现如下错误:fatal: mm_request_send: write: Broken pipe
SSH 服务启动时出现如下错误:main process exited, code=exited
SSH 连接时出现如下错误:pam_limits(sshd:session):could not sent limit for ‘nofile’
SSH 连接时出现如下错误:pam_unix(sshdsession) session closed for user
SSH 连接时出现如下错误:error Could not get shadow infromation for root
SSH 服务及参数配置问题
SSH 服务的默认配置文件为 /etc/ssh/sshd_config。配置文件中的相关参数配置异常,或启用了相关特性或策略,也可能会导致SSH 登录失败。与 SSH 服务及参数配置相关的常见案例如下:
SSH 登录时出现如下错误:Disconnected:No supported authentication methods available
SSH 登录时出现如下错误:User root not allowed because not listed in
SSH 登录时出现如下错误:Permission denied, please try again
SSH 登录时出现如下错误:Too many authentication failures for root
SSH 服务启动时出现如下错误:error while loading shared libraries
SSH 服务启动时出现如下错误:fatal: Cannot bind any address
SSH 服务时出现如下错误:Bad configuration options
云服务器Linux SSH 启用 UseDNS 导致连接速度变慢
SSH 服务关联目录或文件配置问题
SSH 服务基于安全性考虑,在运行时,会对相关目录或文件的权限配置、属组等进行检查。过高或过低的权限配置,都可能会引发服务运行异常,进而导致客户端登录失败。与 SSH 服务关联目录或文件配置相关的常见案例如下:
SSH 登录时出现如下错误:No supported key exchange algorithms
SSH 服务启动时出现如下错误:must be owned by root and not group or word-writable
SSH 服务密钥配置问题
SSH 服务采用非对称加密技术,对所传输的数据进行加密。客户端及服务端会交换和校验相关密钥信息的有效性。与 SSH 服务密钥配置相关的常见案例如下:
SSH 登录时出现如下错误:Host key verification failed
云服务器 Linux SSH 连接交互过程简介
云服务器 Linux SSH 基于密钥交换的自动登录原理简介及配置说明
SSH 无法登录问题排查思路
如果根据前述问题场景进行排查和处理后,还是无法正常登录。则建议按照如下步骤进行逐一排查分析:
1、多客户端对比测试:
使用不同的 SSH 客户端及 管理终端 做对比访问测试,以判断是否是个别客户端自身配置或软件运行问题所致。如果管理终端登录正常,也可以通过管理终端进入系统做进一步排查分析。
2、网络测试:
参阅前文中间网络问题小节相关说明,测试网络连通性。\\
3、服务端日志获取:
通过 管理终端 进入服务器。然后在客户端重新访问测试时,通过如下指令同步获取服务端相关日志信息:tailf /var/log/secure
4、客户端日志获取:
如果客户端是 Linux 环境,则可以通过如下指令,获取详细的 SSH 登录交互日志:
ssh -vvv <服务器 IP>比如:[root@centos~]# ssh -vvv 192.168.0.1OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Applying options for debug2: ssh_connect: needpriv 0debug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.debug1: connect to address 192.168.0.1 port 22: Connection timed outssh: connect to host 192.168.0.1 port 22: Connection timed out
5、SH 服务运行状态检查:
通过 管理终端 登录服务器,然后通过如下方式检查 SSH 服务运行状态:
· 检查服务运行状态:
通过如下指令检查服务运行状态。正常情况下会返回运行状态及相应进程 PID:
[root@centos ~]# service sshd statusopenssh-daemon (pid 31350) is running…[root@centos ~]# service sshd restartStopping sshd: [ OK ]Starting sshd: [ OK ]
· 检查服务监听状态:
通过如下指令检查服务监听状态。正常情况下会返回相应端口监听信息:
netstat -ano | grep 0.0.0.0:22tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN off (0.00/0/0)
127.0.0.1 登录测试:
通过 管理终端 登录服务器,然后 ssh 127.0.0.1。如果能正常登录,则推断是系统防火墙或外部安全组策略等配置异常,导致客户端登录失败。