內部可以 ssh,但外部不能

內部可以 ssh,但外部不能

我有一個 Netgear C6300(韌體版本 2.01.14)路由器/調製解調器,我正在盡全力從外部 ssh 到我的樹莓派。這是我的連接埠轉送設定: 在此輸入影像描述

我可以在內部使用 ssh ssh 192.168.0.84,但在外部 canyouseeme.com 上我得到「錯誤:無法在連接埠(22)上看到您的服務。我的 sshd_config 有該行Port 22,並且這些ListenAddress行被註解掉了。換句話說,我還沒觸及這個這是怎麼回事?

答案1

我想到了幾件事。

您的螢幕截圖中的轉發看起來沒問題。您可以嘗試將其設定為TCP而不是TCP/UDP,因為 ssh 是 TCP 協定。

動態

您確定使用正確的動態更新主機名稱或正確的公用 IP 位址嗎?若要尋找您的公用 IP 位址,請在 Raspberry 或 SSH(內部)上開啟控制台並使用curl icanhazip.com.

sshd_配置

確保/etc/ssh/sshd_configsshd 偵聽正確的介面(以防您有多個介面)。ListenAddress a.b.c.d用 a註解掉該行#並重新啟動服務(/etc/init.d/sshd restartsystemctl restart sshd,取決於您的發行版)。編輯:抱歉,你已經說過了。

編輯:

路由

如果您無法從 獲得輸出curl icanhazip.com,則您的 Raspberry 可能不知道如何存取互聯網。因此它無法從外部回覆您的連線嘗試。新增路線,例如,ip route add default via <your modem's IP address>然後再試一次。

iptables

確保您的 Raspberry 內部防火牆允許來自外部位址的 SSH。iptables -S會給你一個規則清單。尋找像這樣的行

-A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
# SSH only allowed from the internal network, if iptables policy INPUT is DROP

在這種情況下,請使用iptables -P INPUT ACCEPT或允許所有傳入流量iptables -I INPUT -p tcp --dport 22 -j ACCEPT

DS-Lite(雙堆疊精簡版)

在內部,在您的家庭網路中,您使用 IPv4 位址。在您的範例中為 192.168.0.x。但是,您的 ISP 可能在其網路中使用 IPv6。路由器將您的 IPv4 位址轉換為 IPv6。這通常會導致無法遠端連接到家庭網路。

如果curl icanhazip.com給您一個 IPv6 位址,例如2001:a61::35:2,它可能是一個指示器。另外,也許您的 C6300 會顯示相關資訊。 (我使用 AVM Fritz!Box 7360,它明確輸出「Fritz!Box 使用 DS-Lite 隧道」)。

為了 100% 確定,請致電您的 ISP。

編輯:

如果您位於 DS-Lite 隧道後面,可以考慮以下選項來從遠端連線回家:

  • 請您的提供者/ISP 將您的線路切換到非 DS-Lite 線路
  • 用於autossh讓您的家庭電腦連接到另一台主機,例如在工作中(之前詢問您的雇主)、您的網站伺服器、您的 VPS。autossh以建立反向隧道的方式進行配置,例如。然後您可以 ssh 到 yourvps.com 並通過 ssh 從那裡回到家。ssh -R 10000:localhost:22 [email protected]ssh -p 10000 user@localhost

編輯:

Netgear C6300 特定

韌體版本 2.01.14 之前的韌體中似乎存在一個錯誤,只有在啟動「進階配置」>「WAN 設定」中的「回應 Internet WAN 連接埠上的 Ping」選項時,該錯誤才會使開啟的連接埠可見。

Netgear C6300 廣域網路設定

相關內容