我在AWS上有数据库服务器,从我的PC上我必须使用ssh隧道访问该数据库以用于以下场景。
PC - > Jump1 [x.pem,port:22] - > Jump2 [y.pem,port:443] - > mysqldb:3306
对于这种情况,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>
如果您已在各个主机上的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的未加密连接