使用不同密钥从两级跳转服务器到数据库的 SSH 隧道

SSH tunnel to Database from two level of jump server with different keys

我在 AWS 上有数据库服务器,在我的 PC 上,我必须在以下情况下使用 ssh 隧道访问该数据库。

PC --> Jump1 [x.pem, port:22] --> Jump2 [y.pem, port:443] --> mysqldb:3306

对于这种情况,配置文件是最好的方式。

运行

$ touch ~/.ssh/config

在配置文件中添加主机条目。

Host <Host_Name>
    HostName <URL/IP of Jump2>
    User <>
    Port <>
    Identityfile <yyy.pem>
    StrictHostKeyChecking no
    ProxyCommand ssh -i <xxx.pem> <user>@<IP/DNS of Jump1> nc %h %p 2> /dev/null

然后创建隧道

$ ssh <local_port>:DB_URL:<DB PORT> <Host_name>

就是这样。 现在您可以使用

连接到数据库
localhost:<local_port>

如果您已经在相应主机上的 authorized_keys 中拥有 public 密钥 那么你可以使用 -J 指令。

像这样:

ssh -J user1@host1 user2@host2

如果您有多个跳转主机,您可以在 -J 指令中将其连接起来,如下所示:

ssh -J user1@host1,user2@host2,user(n-1)@host(n-1) userN@hostN

我还使用了端口转发,因此它会将您的端口数据一直传送到最后一个站点,然后像这样连接到特定站点:

ssh -L 8080:microsoft.com:80 -J user1@host1 user2@host2

它只会创建从 host2 到 microsoft.com:80

的未加密连接