無法通過 SSH 連接到 openssh 伺服器版本 7.8 及更高版本
我無法使用公鑰身份驗證從終端登錄到我的 VPS 上安裝的干淨 Centos8。
登錄時,它似乎驗證通過,但隨後超時然後返回“連接重置
$$ remote host ip address $$"(不是同行)。 我檢查了所有的日誌。但沒有什麼是真正即將到來的。
我檢查過的事情:
- /var/日誌/消息
- /var/log/audit/audit.log
- /var/log/安全
- ~/.ssh 和 ~/.ssh/id_rsa* 文件的權限
- /etc/ssh/sshd_config
我嘗試從區域網路中的不同機器登錄但沒有成功:
- Ubuntu 18.04
- CentOS 7 機器
- WSL
值得注意的是,我從同一個 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 複製 n 粘貼,但這是您提供的命令的輸出:https ://imgur.com/9WQJGuN
編輯 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
: 連接重置$$ remote host ip address $$埠 22E02
:packet_write_wait:連接到$$ remote host ip address $$埠 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 keepalive@openssh.com 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 ://imgur.com/fIVbEqq
筆記
- 客戶端未收到來自伺服器的第 29 幀
- 託管服務提供商改
openssh
回 v8
我有一些好消息。
我向我的 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
在我確認它最終能正常工作之前,我不會將此標記為答案。
如果不啟用 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
來通過重新啟動保留這些更改。