通过伪终端进行 ssh 端口转发

通过伪终端进行 ssh 端口转发

有这样一种情况:

我所有的工作都是在 Mac 上完成的。

  1. 有一台特定的 Linux 服务器服务器01' 提供对另一台 Linux 服务器的访问 '服务器02'通过伪终端

    因此,要 ssh 进入'服务器02',我从我的 Mac 上执行此操作:

    ssh -t server01 'inline server02'
    
  2. 然后它要求我输入密码'服务器01';我输入它,然后登录到'服务器02'。现在,我在'服务器02' 终端。

  3. 从 '服务器02' 我可以访问位于 ' 上的 mysql 数据库服务器03'使用以下 mysql 命令:

    mysql --host=server03 --port=4201 --user=myuser --password=mypass mydb
    
  4. 两者都不 '服务器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 ...

相关内容