答案1
我想到了幾件事。
您的螢幕截圖中的轉發看起來沒問題。您可以嘗試將其設定為TCP
而不是TCP/UDP
,因為 ssh 是 TCP 協定。
動態
您確定使用正確的動態更新主機名稱或正確的公用 IP 位址嗎?若要尋找您的公用 IP 位址,請在 Raspberry 或 SSH(內部)上開啟控制台並使用curl icanhazip.com
.
sshd_配置
確保/etc/ssh/sshd_config
sshd 偵聽正確的介面(以防您有多個介面)。ListenAddress a.b.c.d
用 a註解掉該行#
並重新啟動服務(/etc/init.d/sshd restart
或systemctl 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」選項時,該錯誤才會使開啟的連接埠可見。