使用不同密钥从两级跳转服务器到数据库的 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
的未加密连接
我在 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
的未加密连接