使用 AWS EC2
从远程机器启动到 AWS 的反向 SSH 隧道:
/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 主机上,而不是另一台机器上的防火墙。
然后我检查sshd
隧道是否已在 AWS 端启动,以响应我的连接。
netstat
表明该服务正在侦听:
tcp 0 0 127.0.0.1:19999
但我仍然收到拒绝连接的消息。我还能分析什么?我在 AWS 机器上找不到任何sshd
日志。/var/log/secure
不会记录这些失败的连接尝试。
据我了解,您希望对 EC2 实例进行反向隧道,然后允许外部客户端连接到该指定端口 19999。
首先,当您运行提供的命令时,您可以使用 netstat 看到端口正在侦听环回接口,因此要使其对外部人员起作用,您需要预先添加绑定地址,如下所示:
这仍然会给您带来错误,因此您实际上要寻找的是在 EC2 上运行的 sshd 服务器中启用的 GatewayPorts 指令。
您应该编辑/etc/ssh/sshd_config并确保您拥有:
在配置中定义。重新启动您的 sshd 服务器并使用上面提供的命令。可以在以下位置找到对此的更详细说明:使用反向 ssh 端口转发绕过公司防火墙