因此,我对 AWS 的网络方面还比较陌生,并且遇到了问题。以下是我遇到的问题的简短描述。
我有一个不可公开访问的 RDS。端点解析为私有 10.XXX IP。我有一个位于同一 VPC/子网中且可公开访问的 EC2 实例。我可以毫无问题地通过 SSH 连接到此 EC2 实例。奇怪的是,我有一个在该 EC2 实例上运行的进程,它能够通过 JDBC 成功连接到 RDS。
但是,由于 RDS 实例不可公开访问,因此我想使用 EC2 实例从我的开发 PC 访问 RDS 实例。每次我这样做时,我的 PC 上都会出现“通道 2:打开失败:管理禁止:打开失败”。
这是我的命令
ssh -i ~/key.pem -N -L 3307:rds-name-here.abcdefghi123.us-east-1.rds.amazonaws.com:3306 [email protected]
显然我更改了详细信息,但这就是命令的要点。这是我遇到的唯一错误,我真的不知道该去哪里查找。
任何正确的方向的指示都会有所帮助。我现在很茫然。我确实确认安全组允许所有来往流量。我根本没有修改网络 ACL。
编辑:我启用了一些调试标志(-vvv)并且它以数据包类型92进行响应?
debug2: fd 6 setting TCP_NODELAY
debug2: fd 6 setting O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 2: new [direct-tcpip]
debug3: send packet: type 90
debug3: receive packet: type 92
channel 2: open failed: administratively prohibited: open failed
debug2: channel 2: zombie
debug2: channel 2: garbage collecting
答案1
检查 /etc/ssh/sshd_config
您可能已禁用隧道:
AllowTcpForwarding 否
需要是
AllowTcpForwarding 是
答案2
所以我找到了答案……显然这是一个拼写错误。我发现另一篇文章告诉我查看 /var/log/secure,那里有关于无法找到端点的错误。我的问题是我使用的是旧副本读取节点的端点,我最初用它来查看主节点中的数据,但后来它被删除了。我没有意识到这一点,因为完整的主机名几乎相同,我以为我复制/粘贴了它。
因此,对于正在研究潜在问题的其他人来说,请检查 /var/log/secure,在其中查找 sshd 并查找错误“名称或服务未知”。这就是发生在我身上的事情。
它现在可以工作了。