使用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端口转发绕过公司防火墙