SSH连接在不正常的端口上被拒绝

使用AWS EC2

反向SSH隧道从远程机器启动到AWS:

/usr/bin/autossh -M 0 -N -R 19999:localhost:22 [email protected] -v -i cloud.pem 

在AWS安全组中添加了端口19999。

检查我是否可以使用telnet连接到AWS:

 telnet: Unable to connect to remote host: Connection refused 

但是,如果我在安全组中拿走了19999端口,我得到了不同的回应:

 telnet: Unable to connect to remote host: Connection timed out 

所以我假设问题在AWS主机上,而不是在另一台机器上的防火墙。

然后,我检查是否已经在AWS端启动了sshd隧道,以响应我的连接。 netstat表明服务正在监听:

 tcp 0 0 127.0.0.1:19999 

但是我仍然收到Connection拒绝的消息。 还有什么我可以分析? 我在AWS机器上找不到任何sshd日志。 /var/log/secure不会logging这些失败的连接尝试。

根据我的理解,你希望做一个到EC2实例的反向隧道,然后让外部客户端连接到指定的端口19999。

首先当你像使用netstat提供的那样运行你的命令的时候,端口正在监听loopback接口,所以为了使这个工作对于外部人员来说,你需要预先设置绑定地址,如下所示:

 /usr/bin/autossh -M 0 -N -R 0.0.0.0:19999:localhost:22 [email protected] -v -i cloud.pem 

这仍然会给你带来错误,所以下一步你实际上在寻找的是在EC2上运行的sshd服务器中启用的GatewayPorts指令。

你应该编辑/ etc / ssh / sshd_config并确保你有:

 GatewayPorts clientspecified 

definde里面的configuration。 重新启动你的sshd服务器并使用上面提供的命令。 有关更详细的解释可以在以下位置find: 使用反向ssh端口转发绕过公司防火墙