使用 Ubuntu Server 14.04,我在端口 2222 上运行了 ssh 服务器(他们在构建时就是这样要求的)。我已经检查了整个设置,但似乎没有什么问题。
设置如下:
- 在大楼里,他们将端口 2222 上的 TCP 连接重定向到我的 IP。
- 80端口同样如此,我可以访问。
- 当我尝试通过 SSH 连接端口 2222 时,我可以使用以下命令查看传入的网络活动
iftop
。 我有
ufw
按照适当的规则运行:2222/TCP ALLOW Anywhere
在
sshd.conf
我得到的文件:我让 ssh 服务器监听 2222 端口。
- 我将 ssh 服务器设置为日志模式,但是尝试连接时却
AUTH
看不到任何内容。/var/log/auth.log
- 这是我的 sshd.conf 文件。
- 是的,ssh 守护进程正在运行并且已重新启动。
因此,每当我尝试连接时,我都会收到如下消息:
ssh: connect to host <publicbuildingip> port 2222: Connection refused
以详细模式运行客户端输出:
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to <publicip> [<publicip>] port 2222.
debug1: connect to address <publicip> port 2222: Connection refused
ssh: connect to host <publicip> port 2222: Connection refused
如果我尝试从同一网络的主机登录,也会发生同样的情况。
跑步netstat
在服务器上类似sudo netstat -tulpn | grep ssh
输出:
tcp 0 0 127.0.0.1:2222 0.0.0.0:* LISTEN 969/sshd
跑步nmap
针对外网的公网IP输出:
Host is up (0.051s latency).
Not shown: 996 filtered ports
PORT STATE SERVICE
21/tcp closed ftp
80/tcp open http
2222/tcp closed unknown
8080/tcp closed http-proxy
Nmap done: 1 IP address (1 host up) scanned in 5.31 seconds
尝试telnet <publicip>
2222
输出:
telnet: Unable to connect to remote host: Connection refused
如果尝试使用建筑物内的网络 IP,结果也是相同的。
但是在服务器上运行的 iftop 显示尝试登录时实际上存在网络活动。
跑步tcpdump
在服务器上类似:tcpdump -vniay port 2222 -i eth0
将在登录尝试时输出以下内容:
15:53:36.812402 IP (tos 0x0, ttl 64, id 56954, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.86.39822 > 192.168.1.90.2222: Flags [S], cksum 0xa1b8 (correct), seq 3966921350, win 292000, options [mss 1460,sackOK,TS val 308476 ecr 0,nop,wscale 7], lenght 0
可能是什么故障了?
答案1
根据该netstat
输出,以及您的sshd
配置文件(尤其是这行)您的 SSH 守护进程正在监听仅限本地的 IP 地址(127.0.0.1),而不是实际与您的 LAN 进行通信或通过网络上的路由器/网关设备进行出站通信的 IP。
验证您的sshd_config
设置中是否有一行ListenAddress
与您的 LAN 相关的内容,例如分配给服务器的私有 LAN IP 地址。如果没有,请在端口指令后添加它,语法如ListenAddress 0.0.0.0
或ListenAddress ::
,将这些项替换为实际的 IPv4 或 IPv6 地址。
请记住,绑定到 127.0.0.0/8 中的任何 IP 地址都只会到达本地计算机本身,而不是任何可以实际路由到您的 LAN/本地网络/任何其他地方的地址。