我有一台 Centos 5 VPS,尝试连接 ssh 时遇到了一些问题。以下是发生的情况:
- 我通过 ssh 进入它并做了一些工作。Nmap 检测到端口 22 已打开。
- 我断开了连接。
- 有时它会让我重新连接,但通常我无法再次通过 ssh 重新连接(它会给出错误:文件编号错误),并且必须等待半个小时,即使我重新启动系统或通过 Plesk 面板重新启动 ssh 守护程序也是如此。Nmap 检测到端口 22 已关闭。
我可以毫无问题地访问 vps 上的 Apache 和 plesk 面板,但是每次连接时 sshd 就会冻结。
这是我的 /etc/ssh/sshd_config 文件:
#$OpenBSD: sshd_config,v 1.73 2005/12/06 22:38:28 reyk Exp $ # 这是 sshd 服务器系统范围的配置文件。请参阅 # sshd_config(5) 了解更多信息。 # 此 sshd 是用 PATH=/usr/local/bin:/bin:/usr/bin 编译的 # 默认 sshd_config 中选项使用的策略 # OpenSSH 将使用其默认值指定选项,其中 # 可能,但保留注释。未注释的选项会改变 # 默认值。 端口 22 #协议 2,1 协议 2 地址家庭网络 收听地址 82.223.121.43 #聆听地址 :: # 协议版本 1 的 HostKey #主机密钥 /etc/ssh/ssh_host_key # 协议版本 2 的 HostKeys #主机密钥 /etc/ssh/ssh_host_rsa_key #主机密钥 /etc/ssh/ssh_host_dsa_key # 临时版本 1 服务器密钥的生命周期和大小 #密钥再生间隔 1小时 #服务器密钥位 768 # 日志记录 # 废弃 QuietMode 和 FascistLogging #SyslogFacility 身份验证 Syslog 工具 AUTHPRIV #日志级别信息 # 验证: 登录宽限时间 2分钟 PermitRootLogin 是 StrictModes 是 #MaxAuthTries 6 #RSAAuthentication 是 #PubkeyAuthentication 是 #AuthorizedKeys 文件 .ssh/authorized_keys # 为了使其工作,您还需要 /etc/ssh/ssh_known_hosts 中的主机密钥 #RhostsRSAAuthentication 否 # 协议版本 2 类似 #HostbasedAuthentication 否 # 如果不信任 ~/.ssh/known_hosts,则更改为 yes # RhostsRSAAuthentication 和 HostbasedAuthentication #IgnoreUserKnownHosts 否 # 不要读取用户的 ~/.rhosts 和 ~/.shosts 文件 #IgnoreRhosts 是 # 要禁用隧道明文密码,请在此处更改为否! #PasswordAuthentication 是 #PermitEmptyPasswords 否 #PasswordAuthentication 是 # 更改为 no 以禁用 s/key 密码 #ChallengeResponseAuthentication 是 # Kerberos 选项 #KerberosAuthentication 否 #KerberosOrLocalPasswd 是 #KerberosTicketCleanup 是 #KerberosGetAFSToken 否 # GSSAPI 选项 #GSSAPIAuthentication 否 #GSSAPICleanupCredentials 是 # 将其设置为“是”以启用 PAM 身份验证、帐户处理、 # 和会话处理。如果启用此功能,PAM 身份验证将 # 通过ChallengeResponseAuthentication机制获得允许。 # 根据您的 PAM 配置,这可能会绕过 # PasswordAuthentication、PermitEmptyPasswords 和 # “PermitRootLogin without-password”。如果您只想要 PAM 帐户和 # 会话检查无需 PAM 身份验证即可运行,然后启用此功能但设置 #ChallengeResponseAuthentication=否 UsePAM 是 # 接受与语言环境相关的环境变量 接受环境语言 LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 接受环境LC_PAPERLC_名称LC_地址LC_电话LC_测量 接受环境 LC_IDENTIFICATION LC_ALL #AllowTcpForwarding 是 #GatewayPorts 否 #X11转发否 X11转发否 #X11DisplayOffset 10 #X11UseLocalhost 是 #PrintMotd 是的 #PrintLastLog 是 #TCPKeepAlive 是 #UseLogin 没有 #UsePrivilegeSeparation 是 #PermitUserEnvironment 否 #压缩延迟 #客户端存活间隔 0 #客户端存活数最大 3 #ShowPatchLevel 没有 UseDNS 否 #Pid文件 /var/run/sshd.pid MaxStartups 20 #PermitTunnel 否 #ChrootDirectory 无 # 没有默认横幅路径 #横幅 /some/path # 覆盖无子系统的默认设置 子系统 sftp /usr/libexec/openssh/sftp-server
答案1
当您能够成功登录 SSH 时,请尝试以下操作 - 将 sshd_config 中的 LogLevel 更改为:
LogLevel DEBUG
在仍处于登录状态时重新启动 SSHD 以使更改生效,然后注销。下次您能够成功通过 SSH 进入服务器时,请发布 /var/log/secure 的输出。
此外,如果您有权访问 Linux 客户端计算机,请尝试使用以下命令登录您的服务器:
ssh -vvv user@hostname
这将有助于弄清楚当服务器“挂起”时客户端看到什么。
另一个提示 - 我注意到您已将 PermitRootLogin 设置为“是”。在面向公众的 VPS 上,这是非常糟糕的主意。请将其设置为“否”并使用 sudo。