正如标题所说,我正在尝试创建一个家庭 Linux 服务器,并且一切都进展顺利,包括当我从笔记本电脑和台式机通过 LAN ssh 进入服务器时。
在网络和服务器管理方面我完全是个初学者,但已经涉足 Linux 有一段时间了。
服务器是一台 2014 年左右的旧 MacBook,安装了 Linux 服务器 22.04。我通过 USB 转以太网适配器将其连接到我的 ISP 路由器,因为 MacBook 上没有以太网端口。
当我尝试使用连接到手机互联网的笔记本电脑通过 WAN 进行 ssh 时,一切都停滞了。无论我怎么尝试,我都会系统地超时。
我已经遇到这个问题几天了,我开始有点不知所措了。有什么建议可以解释是什么原因导致超时吗?是防火墙问题吗?可能是 USB 转以太网适配器的问题吗?我为 LAN 上的 ssh 设置了不同的端口,这是问题所在吗?网上的建议中我唯一没有尝试的就是创建 VPN。这能解决我的问题吗?
到目前为止我已经尝试过:
我 ssh 到之前转发的端口
$ ssh -vvv -p FORWARDEDPORTNUMBER [email protected]
输出:
OpenSSH_8.9p1 Ubuntu-3ubuntu0.4, OpenSSL 3.0.2 15 Mar 2022
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname public.ip.of.my.router is address
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/someguy/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/someguy/.ssh/known_hosts2'
debug3: ssh_connect_direct: entering
debug1: Connecting to public.ip.of.my.router [public.ip.of.my.router] port FORWARDEDPORTNUMBER .
debug3: set_sock_tos: set socket 3 IP_TOS 0x10
debug1: connect to address public.ip.of.my.router port FORWARDEDPORTNUMBER : Connection timed out
ssh: connect to host public.ip.of.my.router port FORWARDEDPORTNUMBER : Connection timed out
是不是端口转发错了?
不,使用以下工具https://www.yougetsignal.com/tools/open-ports/,端口确实开放了
~$ sudo netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6968 0.0.0.0:* LISTEN 961/sshd: /usr/sbin
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 817/systemd-resolve
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1002/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 1002/smbd
tcp 0 0 0.0.0.0:1445 0.0.0.0:* LISTEN 961/sshd: /usr/sbin
tcp6 0 0 :::FORWARDEDPORTNUMBER :::* LISTEN 961/sshd: /usr/sbin
tcp6 0 0 :::139 :::* LISTEN 1002/smbd
tcp6 0 0 :::80 :::* LISTEN 878/apache2
tcp6 0 0 :::445 :::* LISTEN 1002/smbd
tcp6 0 0 :::1445 :::* LISTEN 961/sshd: /usr/sbin
它是来自防火墙吗?
我尝试过完全禁用服务器的防火墙(我使用 ufw,因此 sudo ufw disable 可以解决问题),并在我的 ISP 路由器上将安全级别调到最低
ping 服务器一切正常
Telnet 也有效
我认为?我不太清楚这里发生了什么,我只是按照网上的建议找到了这个
$curl -v telnet://public.ip.of.my.router:FORWARDEDPORTNUMBER
* Trying public.ip.of.my.router:FORWARDEDPORTNUMBER...
* Connected to public.ip.of.my.router (public.ip.of.my.router) port FORWARDEDPORTNUMBER (#0)
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.4
some user input
Invalid SSH identification string.
some more user input
* Closing connection 0
nmapping 显示端口已被过滤
nmap public.ip.of.my.router -pFORWARDEDPORTNUMBER
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-05 19:50 CEST
Nmap scan report for public.ip.of.my.router
Host is up (0.19s latency).
PORT STATE SERVICE
FORWARDEDPORTNUMBER/tcp filtered unknown
Nmap done: 1 IP address (1 host up) scanned in 2.09 seconds
ssh 配置
(/etc/ssh/sshd_config)正在监听正确的端口 ssh 密钥认证
我使用 ssh 密钥身份验证,在同一台笔记本电脑上通过 LAN 运行良好
答案1
您是否访问了 ISP 的路由器接口?我最好的猜测是,您不仅需要防火墙的转发规则,还需要匹配的 NAT 规则。当我向 pfSense 添加防火墙规则时,它会添加相应的 NAT 规则。
答案2
找到罪魁祸首了,是我的 ISP 路由器。原来还有另一个特定于此路由器的设置,但我在网上找不到任何相关信息。