SSH 服务器对公共互联网不可见

SSH 服务器对公共互联网不可见

我在一台 Ubuntu (Server) 14.04 机器上安装了 OpenSSH Server。我可以通过本地网络连接,但无法通过互联网连接。我在路由器上设置了端口转发。

我努力了:

  1. 将端口 22 更改为另一个(随机)端口,以确保不是因为我的 ISP 阻止了端口 22
  2. 暂时禁用防火墙进行测试。这两种方法都无法解决问题。

知道为什么我无法连接吗?错误是:

连接到地址端口:连接被拒绝

d

输出如下netstat

netstat -apn | grep: 42530

(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp        0      0 0.0.0.0:42530           0.0.0.0:*               LISTEN      -               
tcp        0    116 192.168.2.23:42530      192.168.2.11:58944      ESTABLISHED -               
tcp6       0      0 :::42530                :::*                    LISTEN      -             

答案1

我会尝试一种不同的方法 - 我会做两件事 - 第一件事是在另一个端口上执行另一个 SSH 实例(不要忘记在路由器中进行端口转发) - 以 root 身份执行如下命令

/usr/sbin/sshd -p 2222 -d

这将在端口 2222 上启动另一个 SSHD 实例,并启用调试功能 - 因此它不会进入后台。然后我会尝试远程连接它,看看发生了什么。(在远程端,我还会输入类似

ssh -v ip.地址

这样我就能了解谈判的进展情况。

如果我没有看到客户端和服务器之间有任何通信,下一步就是在服务器上使用 tcpdump 来查看流量是否到达和/或离开服务器。例如:

/usr/sbin/tcpdump -n -i eth0 端口 2222

这可以测试端口转发是否正常工作 - 至少流量是否通过路由器转发并返回到路由器。

答案2

问题是路由器显然阻止了来自网络内部的到其公共 IP 的连接。如果我尝试从本地网络外部进行连接,它会接受这些连接。奇怪...

相关内容