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

问题描述 投票:0回答:2

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

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

ssh ssh-tunnel tunneling
2个回答
1
投票

对于这种情况,Config File是最好的方法。

$ 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>

而已。现在您可以使用连接到DB

localhost:<local_port>

0
投票

如果您已在各个主机上的authorized_keys中拥有公钥,则可以使用-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的未加密连接

© www.soinside.com 2019 - 2024. All rights reserved.