到目前为止我已经尝试过:

到目前为止我已经尝试过:

正如标题所说,我正在尝试创建一个家庭 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 路由器。原来还有另一个特定于此路由器的设置,但我在网上找不到任何相关信息。

相关内容