有这样一种情况:
我所有的工作都是在 Mac 上完成的。
有一台特定的 Linux 服务器服务器01' 提供对另一台 Linux 服务器的访问 '服务器02'通过伪终端
因此,要 ssh 进入'服务器02',我从我的 Mac 上执行此操作:
ssh -t server01 'inline server02'
然后它要求我输入密码'服务器01';我输入它,然后登录到'服务器02'。现在,我在'服务器02' 终端。
从 '服务器02' 我可以访问位于 ' 上的 mysql 数据库服务器03'使用以下 mysql 命令:
mysql --host=server03 --port=4201 --user=myuser --password=mypass mydb
两者都不 '服务器01' 也不 '服务器02' 或者我的 Mac 可以直接通过 SSH 访问 '服务器03‘
现在,我想访问 mysql服务器03' 直接从我的 mac 通过某种端口转发。因此,如果我在 mac 终端上输入以下命令,它应该会将我连接到 '服务器03':
mysql --host=localhost --port=4201 --user=myuser --password=mypass mydb
有办法吗?任何帮助都将不胜感激。
答案1
设置转发链。首先,连接到 server1,并为到 server2 的 SSH 连接添加转发:
mac% ssh -f -N -L 10022:server2:22 server1
(该-f -N
选项将使其在后台运行。)
然后通过该转发连接到服务器 2,并添加到服务器 3 的 MySQL 连接的转发:
mac% ssh -f -N -L 14201:server3:4201 -p 10022 -o HostkeyAlias=server2 localhost
(您正在连接到localhost
端口10022
,并且先前的转发使您能够到达服务器 2。HostkeyAlias 是可选的,只是有些偏执。)
最后连接到服务器3:
mac% mysql --host=localhost --port=14201 ...