ssh_exchange_identification:連接被遠端主機關閉(不使用hosts.deny)
我沒有使用
hosts.allow
orhosts.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
相同的結果,除了客戶端中正在進行的大量自動配置,最終出現相同的錯誤。
如果您排除了任何“外部”因素,以下一組步驟通常有助於縮小範圍。因此,雖然這不能直接回答您的問題,但它可能有助於追踪錯誤原因。
故障排除
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 甚至是我需要支付額外費用才能獲得帶外訪問的物理伺服器)到機器)。