![使用端口转发远程 SSH 访问不同网络中的 ubuntu 服务器](https://linux22.com/image/953935/%E4%BD%BF%E7%94%A8%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E8%BF%9C%E7%A8%8B%20SSH%20%E8%AE%BF%E9%97%AE%E4%B8%8D%E5%90%8C%E7%BD%91%E7%BB%9C%E4%B8%AD%E7%9A%84%20ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
当我尝试从本地网络之外的任何地方通过端口 22 远程 ssh 进入本地机器时,却遇到了困难。
我的本地网络上有一台运行 Ubuntu Server 和 Fritz 盒的本地机器。
本地机器在我的 Wi-Fi 和 LAN 上运行。我已经可以通过 ssh 进入本地机器,同时在我的家庭网络上,直接连接到我的路由器。
先决条件
- 我正在使用 Fritz box 7590
- Raspberry PI 4 上的 Ubuntu Server v24.10
- 我的路由器上已设置并激活了端口 21、22、80、443 的端口转发
- 我已经在路由器上为机器设置了静态 IP
- OpenSSH 已完全配置
- 通过 SSH 进行本地访问
- 防火墙状态为非活动
- 在我的本地网络上执行 ssh 连接时,我可以在我的服务器上看到一些错误弹出 brmcfmac:brcmf_set_channel:设置 chanspec 0x100e 失败,原因 -52(但 WiFi 可以正常工作)
- 我有路由器的 IP 地址。假设它是 41.564.827.27
这是我已经重复的步骤:
- 安装了包含 OpenSSH 的 Ubuntu Server v23.10 完整版本
- 配置所有用户和具有不同访问权限的权限
- 相应配置 SSH 客户端(SSH 状态检查=活动)
- 我现在可以通过 Mac 通过本地网络访问我的机器,使用 term2 终端
- 在我的路由器上,我为端口 22、21、80 和 443 创建了相关的端口转发
- 检查了 IfConfig,并为设备分配了静态 IP
- iptables -L (输入、输出、转发)全部设置为接受
- 检查机器上的访问日志,我发现我的请求没有通过路由器转发。
以下是我在尝试从本地网络外部 ssh 进入机器时遇到的错误
❯ ssh -L 22 [email protected]
Bad local forwarding specification '22'
❯ ssh -p 22 [email protected]
ssh: connect to host 41.564.827.27 port 22: Operation timed out
❯ ssh -p 55 [email protected]
ssh: connect to host 41.564.827.27 port 22: Operation timed out
❯ ssh [email protected]:22
ssh: Could not resolve hostname 41.564.827.27:22: nodename nor
servname provided, or not known
我已经对路由器进行了内部和外部 ping 操作。##以下是 ping 操作的结果##
从本地网络到本地 IP 进行内部 Ping
PING 192.168.178.1 (192.168.178.1): 56 data bytes
64 bytes from 192.168.178.1: icmp_seq=0 ttl=64 time=3.736 ms
64 bytes from 192.168.178.1: icmp_seq=1 ttl=64 time=4.215 ms
64 bytes from 192.168.178.1: icmp_seq=2 ttl=64 time=8.692 ms
64 bytes from 192.168.178.1: icmp_seq=3 ttl=64 time=6.017 ms
64 bytes from 192.168.178.1: icmp_seq=4 ttl=64 time=3.381 ms
64 bytes from 192.168.178.1: icmp_seq=5 ttl=64 time=8.389 ms
^C
--- 192.168.178.1 ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.381/5.738/8.692/2.149 ms
从本地网络到公网 IP 进行内部 Ping
PING 41.564.827.27 (41.564.827.27): 56 data bytes
64 bytes from 41.564.827.27: icmp_seq=0 ttl=61 time=52.221 ms
64 bytes from 41.564.827.27: icmp_seq=1 ttl=61 time=61.948 ms
64 bytes from 41.564.827.27: icmp_seq=2 ttl=61 time=301.428 ms
64 bytes from 41.564.827.27: icmp_seq=3 ttl=61 time=344.452 ms
64 bytes from 41.564.827.27: icmp_seq=4 ttl=61 time=185.545 ms
64 bytes from 41.564.827.27: icmp_seq=5 ttl=61 time=16.076 ms
64 bytes from 41.564.827.27: icmp_seq=6 ttl=61 time=20.815 ms
64 bytes from 41.564.827.27: icmp_seq=7 ttl=61 time=42.052 ms
64 bytes from 41.564.827.27: icmp_seq=8 ttl=61 time=68.746 ms
64 bytes from 41.564.827.27: icmp_seq=9 ttl=61 time=151.611 ms
^C
--- 41.564.827.27 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 16.076/124.489/344.452/112.113 ms
~/Developer master* 10s ❯ ping ackets transmitted, 4 packets received, 0.0% packet loss
在公共 IP 上对外部 WAN 进行 ping
PING 41.564.827.27 (41.564.827.27): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
Request timeout for icmp_seq 6
Request timeout for icmp_seq 7
Request timeout for icmp_seq 8
Request timeout for icmp_seq 9
^C
--- 41.564.827.27 ping statistics ---
11 packets transmitted, 0 packets received, 100.0% packet loss