如何调试SSH端口转发

har*_*ari 8 freebsd ssh port-forwarding sshd

这是ssh 端口转发的扩展,可以从任何地方访问我的家用机器

我尝试了那里提到的事情,但我无法ssh使用我的机器。

用于端口转发的 Netgear 路由器设置:

Start Port: 22
End Port: 22
Server IP Address: IP address of by FreeBSD box
Run Code Online (Sandbox Code Playgroud)

/etc/ssh/sshd_conf 我的 FreeBSD 盒子:

PasswordAuthentication yes
AllowUsers root
X11Forwarding yes
AllowTcpForwarding yes
Run Code Online (Sandbox Code Playgroud)

我如何尝试连接:

我已经注册dyndns.com并获得了一个映射到我的外部 IP 地址的 URL。

在我家庭网络中的另一台机器上,我这样做: ssh -l root my_dyndns_ip 这只是超时。

另一方面,我可以my_dyndns_url成功ping通。

调试

我该如何解决这个问题,以便我可以ssh从任何地方到达my_dnydns_url

我试图查看我的 Netgear 路由器的日志,但是在 ssh 尝试失败时,路由器上没有生成登录。

我也调查过,/var/log/messages但找不到任何东西。

编辑:0 以详细模式运行 ssh(按照@jasonwryan 的建议):

我注意到一件奇怪的事情:当我对 dyndns.com 提供的 url 执行 ssh 时,它试图连接到其他 IP 地址,而不是我从 whatismyip.com 获得的 IP 地址。是不是错了?

编辑:1 dyndns 的问题现已解决。

现在,当我尝试 ssh 时,它超时并出现错误:连接超时

编辑:2 iptables 或 NAT 与它有什么关系?

编辑:3 ,我开始ssh-d option来捕获调试消息。

当我从 wlan 中的任何其他机器 ssh 到 freebsd 框时,它工作正常,我可以看到日志。

但是当我 ssh 到外部 ip(应该将它转发到我的 freebsd 框)时,我什至看不到任何日志 - 这意味着请求甚至没有到达 freebsd 框。它超时了。

MaQ*_*eod 6

我认为您的问题不在于端口转发,而是路由器中 NAT 配置中的另一个选项。

首先,确保如果您使用您的 LAN IP,您可以从网络上的另一台机器成功 SSH。这确保了 SSH 可以正常工作。

其次,使用公共 IP从网络外的另一台机器进行测试。这可确保端口转发正常工作。

第三,在网络外的同一台机器上进行测试并使用 DynDNS URL。这可确保 DynDNS 正常工作。

如果所有这些都成功,那么您的配置就没有问题(我假设它是正确的)并且您的问题只是从网络内部访问公共 IP(直接或通过 DynDNS)。这意味着您的路由器需要启用NAT 反射(如果可能)以路由内部请求,就好像它们是对公共 IP 的外部请求一样。


Mik*_*ike 1

您的 sshd 服务器是否正在侦听端口 22,请尝试添加:

Port 22
Run Code Online (Sandbox Code Playgroud)

到你的配置。

如果这不起作用,请尝试转发高于 1024 的端口(某些 ISP 不允许在低于 1024 的端口上传输非商业订阅者流量)。另外,请确保如果您这样做,您会更改我刚刚告诉您的conf中的行以反映相同的值。