Linux

ssh_exchange_identification:連接被遠端主機關閉(不使用hosts.deny)

  • October 21, 2021

沒有使用hosts.allowor hosts.deny,而且 SSH 在我的 windows 機器(相同的筆記型電腦,不同的硬碟)上工作,但不是我的 Linux 機器。

ssh -vvv root@host -p port給出:

OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to host [host] port <port>.
debug1: Connection established.
debug1: identity file /home/torxed/.ssh/id_dsa type -1
debug1: identity file /home/torxed/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6
ssh_exchange_identification: read: Connection reset by peer

在 windows 機器上,一切正常,所以我檢查了安全日誌,裡面的行是相同的,伺服器對待兩個不同的“機器”沒有什麼不同,它們都可以通過公鑰身份驗證。

因此得出的結論是,這一定是我本地 ArchLinux 筆記型電腦的問題。但是什麼?

[torxed@archie ~]$ cat .ssh/known_hosts 
[torxed@archie ~]$ 

所以這不是問題…

[torxed@archie ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

與防火牆設置沒有衝突(目前)..

[torxed@archie ~]$ ls -la .ssh/
total 20
drwx------  2 torxed users 4096 Sep  3  2013 .
drwx------ 51 torxed users 4096 May 11 11:11 ..
-rw-------  1 torxed users 1679 Sep  3  2013 id_rsa
-rw-r--r--  1 torxed users  403 Sep  3  2013 id_rsa.pub
-rw-r--r--  1 torxed users  170 May 11 11:21 known_hosts

權限似乎很好(在伺服器上相同).. 也嘗試過不配置/etc/ssh/ssh_config相同的結果,除了客戶端中正在進行的大量自動配置,最終出現相同的錯誤。

最初發表於問 Ubuntu

如果您排除了任何“外部”因素,以下一組步驟通常有助於縮小範圍。因此,雖然這不能直接回答您的問題,但它可能有助於追踪錯誤原因。

故障排除sshd

我發現在任何此類情況下通常非常有用的是開始時sshd不要讓它守護程序。就我而言,問題是既沒有syslog也沒有auth.log表現出任何有意義的東西。

當我從終端啟動它時,我得到:

# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.

好多了!此錯誤消息使我能夠查看問題所在並進行修復。兩個日誌文件都不包含此輸出。

**注意:**至少在 Ubuntu 上,這$(which sshd)是滿足sshd絕對路徑要求的最佳方法。否則會出現以下錯誤:sshd re-exec requires execution with an absolute path. -p 10222使得在該sshd替代埠上偵聽,覆蓋配置文件 - 這樣它就不會與可能正在執行的sshd實例發生衝突。確保在這裡選擇一個自由港。

最後:連接到備用埠 ( ssh -p 10222 user@server)。

這種方法多次幫助我發現問題,無論是身份驗證問題還是其他類型。要獲得真正詳細的輸出stdout,請使用$(which sshd) -Ddddp 10222(注意添加dd以增加詳細程度)。更多調試好檢查man sshd


此方法的主要優點是它允許您檢查sshd配置而無需sshd在預設埠上重新啟動。通常這不會干擾現有的 SSH 連接,但我已經看到了。因此,這允許一個人在 - 可能 - 切斷對遠端伺服器的訪問之前驗證配置文件(例如,我有一些 VPS 甚至是我需要支付額外費用才能獲得帶外訪問的物理伺服器)到機器)。

引用自:https://unix.stackexchange.com/questions/128894