我无法使用公钥身份验证从终端登录 VPS 上干净的 Centos8 安装。
登录时,它似乎验证正常,但随后超时,然后返回“连接由 [远程主机 IP 地址] 重置”(不是对等方)。
我已经检查了所有日志。但没有什么真正即将到来。
我检查过的事情:
- /var/日志/消息
- /var/log/audit/audit.log
- /var/日志/安全
- ~/.ssh 和 ~/.ssh/id_rsa* 文件的权限
- /etc/ssh/sshd_config
我尝试从局域网中的不同机器登录但没有成功:
- 乌班图18.04
- CentOS 7机器
- 世界SL
值得注意的是,我从同一个 VPS 登录到干净的 CentOS7 安装没有任何问题。
OpenSSH 8 中是否有我不知道的更改?
我已附加用于登录 CentOS7 和 CentOS8 系统的详细输出:
- CentOS 7 SSH 正常:https://pastebin.com/uGc1T8tk
- CentOS 8 SSH 失败:https://pastebin.com/XadQQEBK
正如您所看到的,身份验证在以下两个方面均成功:
debug1: Authentication succeeded (publickey)
我在 CentOS 8 中看到的主要区别是它现在使用 OpenSSH 8 而不是 OpenSSH 7
OpenSSH 8 中是否有我不知道的更改?
预先感谢大家。
编辑1
@thehostingadmin 我不知道如何从 Web GUI 复制粘贴,但这是您提供的命令的输出:https://i.stack.imgur.com/9lJec.jpg
编辑2
# sysctl -w net.ipv4.tcp_tw_recycle=0
sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: No such file or directory
# sysctl -w net.ipv4.tcp_tw_reuse=0
net.ipv4.tcp_tw_reuse = 0
结果:仍然没有骰子
编辑3
成功/失败矩阵
| OS | SSH Client | Network | Auth | Success |
|--------------------|---------------|--------------|------|------------|
| Ubuntu 18.04 (WSL) | OpenSSH_7.6p1 | LAN (NAT x2) | OK | E01 | TO/H |
| Debian 10 (RPi) | OpenSSH_7.9p1 | LAN (NAT x2) | OK | TO/H |
| Ubuntu 18.04 | OpenSSH_7.6p1 | LAN (NAT x1) | OK | E02 |
| CentOS 7.8 | OpenSSH_7.4p1 | LAN (NAT x1) | OK | TO/H |
| CentOS 7.8 | OpenSSH_7.4p1 | VPS | OK | OK |
E01
:通过[远程主机IP地址]端口22重置连接E02
: packet_write_wait: 连接到 [远程主机 IP 地址] 端口 22: 管道损坏TO/H
:超时/挂起
编辑4 进行了以下更改:
# /etc/ssh/sshd_config
TCPKeepAlive yes
ClientAliveInterval 20
ClientAliveCountMax 5
没有可测量的差异。
编辑5
当 ssh 客户端抛出错误时E01
,我可以在服务器上看到以下内容:
# journalctl -u systemd-logind -fn0
Aug 27 14:51:18 host systemd-logind[701]: New session 136 of user root.
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 1
Aug 27 14:51:38 host systemd-logind[701]: Session 136 logged out. Waiting for processes to exit.
Aug 27 14:51:38 host systemd-logind[701]: Removed session 136.
成功登录如下所示:
Aug 27 15:04:42 host systemd-logind[701]: New session 143 of user root.
编辑6
我转向LogLevel
并DEBUG3
发现以下内容/var/log/secure
# Login Fail
Aug 27 15:59:07 host sshd[9387]: debug3: monitor_read: checking request 124
Aug 27 15:59:26 host sshd[9389]: Read error from remote host <wan ip> port 2611: Connection reset by peer
Aug 27 15:59:26 host sshd[9389]: debug1: do_cleanup
# Login Success
Aug 27 15:57:48 host sshd[9360]: debug3: monitor_read: checking request 124
编辑7
向@fra-san 道歉。添加更详细的日志记录 ( -vvv
) 确实提供了更多详细信息
# SSH fail
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: send packet: type 1
Connection reset by <remote host ip> port 22
# SSH Success
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Activate the web console with: systemctl enable --now cockpit.socket
编辑8
将我的家庭路由器(自定义固件)更换为 ISP 提供的路由器。还是没有喜悦。
编辑9
涉足wireshark数据包跟踪。
注意:向我的托管提供商(适用于他们)提出问题后,服务器上的 OpenSSH 服务器已切换到 OpenSSH 7.8 - 但问题仍然存在。
编辑10
线鲨。客户端与服务器:https://i.stack.imgur.com/XRZRW.jpg
笔记
- 客户端未收到来自服务器的帧 29
- 托管提供商改
openssh
回 v8
答案1
如果不启用 DEBUG 日志记录,然后在 VPS 上使用 journalctl 跟踪 sshd,则无法知道。
为此,您需要询问您的 VPS 提供商如何通过控制台访问服务器。不同的提供商有不同的方法。
/etc/ssh/sshd_config
在VPS上的任意位置添加以下配置:
LogLevel DEBUG
重新启动 VPS 上的 sshd:
sudo systemctl restart sshd
跟踪 VPS 上的 sshd 日志:
journalctl -u sshd -fn0
现在尝试从本地计算机进行 ssh,以便您可以看到 sshd 所说的错误。
编辑:根据评论结果更新:
考虑到您在从 NATd 主机连接时遇到困难,请检查您的 Cent 8 VPS 上是否启用了以下内核配置,如果是,请禁用它们:
sysctl -w net.ipv4.tcp_tw_recycle=0
sysctl -w net.ipv4.tcp_tw_reuse=0
如果这有效,请使用/etc/sysctl.conf
通过重新启动来保留这些更改。
答案2
我有一些好消息。
我向我的 ISP 提出了问题。他们给了我一个新的IP。我不知道他们还做了什么,但它已经解决了问题。
我还向从事openssh
.
他们表示这是一个已知问题,尤其是在 VMWare 社区中:
https://communities.vmware.com/thread/590825
该问题与 OpenSSH_7.8 中与该标志相关的更改有关QoS
。
http://www.openssh.com/txt/release-7.8
这解决方法~/.ssh/config
是在你的文件中使用以下内容
Host *
IPQoS=throughput
在我确认它对我来说有效之前,我不会将其标记为答案。