SSH 伺服器不回應連線請求

SSH 伺服器不回應連線請求

我正在嘗試使用 OpenSSH 在本機電腦上設定 SSH 伺服器。當我嘗試從遠端主機透過 SSH 連接到本機 SSH 伺服器時,SSH 伺服器沒有回應並且請求逾時。我很確定有一個非常明顯的解決方案可以解決這個問題,但我只是忽略了。

當我嘗試從遠端主機透過 SSH 登入時,會發生以下情況:

yoshimi@robots:/$ ssh -vv [email protected]
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 99.3.26.94 [99.3.26.94] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: connect to address 99.3.26.94 port 22: Connection timed out
ssh: connect to host 99.3.26.94 port 22: Connection timed out

我的遠端主機在哪裡robots99.3.26.94我的本機 SSH 伺服器在哪裡。

SSH 正在運行

volt@arnold:~$ ps -A | grep sshd
 5784 ?        00:00:00 sshd

arnold我的本地 SSH 伺服器在哪裡?

路由器上設定連接埠轉發

我已將家庭路由器設定為將連接埠 80 和 22 轉送到我的 SSH 伺服器。有趣的是,連接埠 80 運行順利——直接進入 Apache Web 目錄。埠 22——沒那麼多。

NMap 說它已被過濾

yoshimi@robots:/$ nmap -p 22 99.3.26.94

Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 14:45 EDT
Nmap scan report for 99-3-26-94.lightspeed.bcvloh.sbcglobal.net (99.3.26.94)
Host is up (0.33s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap done: 1 IP address (1 host up) scanned in 7.59 seconds

我的遠端主機在哪裡robots99.3.26.94我的本機 SSH 伺服器在哪裡。

這不是 IPTables(我認為)

volt@arnold:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

……而且我沒有安裝任何其他防火牆——這是一個相對較新的 Debian netinst。

那麼,那麼:還能是什麼?它確實看起來像是防火牆之類的東西,只是忽略流量,但如果它不是路由器,它不是 iptables,也不是 SSH 伺服器上的另一個防火牆,...還有什麼?

編輯:NetStat 伺服器輸出

從 SSH 伺服器:

tcp6       0      0 :::22                   :::*                    LISTEN      5784/sshd       

答案1

非常令人失望的自我回答

把這個問題擱置一天,然後再回來解決這個問題,我既鬆了一口氣,又感到不安(更多的是不安而不是如釋重負),我發現一切都神秘地正常工作。

那麼,問題是什麼?

沒有更改或調整任何設定——路由器上、SSH 伺服器上以及 SSH 用戶端電腦上都沒有。可以相當肯定地說,儘管設定正確,但路由器未能正確處理傳入流量。鑑於小型家庭路由器軟體不是真的設計用於處理端口轉發,這個可憐的傢伙花了一段時間才實施必要的更改。

但已經過了 6 個小時!

是的,夥計,我知道。我花了一整天的時間試圖找出問題所在,但始終沒有找到,因為不是哪裡不對了。顯然,路由器設定可能需要 6 小時(可能更長)才能生效。

那我如何知道這是否是我的問題?

我在這次冒險中遇到的一個很棒的工具是tcpdump.這個瘦小的傢伙會為您嗅探流量,為您提供有關實際情況的寶貴見解。另外,他還有一些超級過濾功能,可以讓你精確地縮小你想要查看/尋找的內容。例如,命令:

tcpdump -i wlan1 port 22 -n -Q inout

指示透過 wlan1 介面( =“介面”)來tcpdump尋找流量,僅透過連接埠 22,忽略 DNS 名稱解析( =“無名稱解析”),並且我們希望查看傳入和傳出流量(接受、或;是預設值) 。-i-n-Qinoutinoutinout

透過在 SSH 伺服器上執行此命令,同時嘗試透過遠端電腦連接,很快就會清楚問題所在。本質上有3種可能性:

  1. 如果你看到傳入來自遠端機器的流量,但是沒有傳出來自本機伺服器的流量,問題出在伺服器:可能需要更改防火牆規則等。
  2. 如果你看到傳入和傳出,但您的遠端電腦沒有收到回應,它很可能是路由器:它允許傳入流量,但丟棄傳出封包。
  3. 如果有根本沒有交通,這也可能是路由器問題:遠端電腦的SYN封包在到達您的伺服器之前就被路由器忽略並丟棄。

一旦發現問題所在,修復(通常)就很簡單了。

相關內容