通过面向外部的服务器到内部服务器上的 mysql 的受限 ssh 隧道

通过面向外部的服务器到内部服务器上的 mysql 的受限 ssh 隧道

使用我的用户,我可以使用以下命令通过外部服务器建立隧道,在内部服务器上设置到 mysql(端口 3306)的 ssh 隧道:

ssh -L 33306:localhost:33306 [email protected] ssh -L 33306:localhost:3306 me@internal

然后我就可以使用以下命令登录mysql:

mysql -h 127.0.0.1 -P 33306 -u me -p my_database

现在,我想设置另一个用户能够执行相同的操作,但不能执行任何其他操作(不能登录、访问其他端口等)。

在external.com 上的authorized_keys 中,我有:

permitopen="internal:3306",permitopen="localhost:33306",no-pty ssh-rsa AAAA...== 

我对内部的authorized_keys没有任何限制(不确定我是否需要它们 - 一旦我开始工作就会探索)。

然后,当我这样做时:

mysql -h 127.0.0.1 -P 33306 -u me -p my_database

它似乎有效,因为它要求我输入密码。我输入密码,但是 mysql 给了我:

Enter password: 
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

在我设置隧道的终端中,我得到:

channel 3: open failed: administratively prohibited: open failed

当它询问 mysql 密码时,这只是在尝试与服务器通信之前在本地发生的吗?我的permitopen标志错误吗?

答案1

没关系。问题是我已将该用户设置为在两台计算机上都没有 shell,以便他们只能使用第一台服务器作为隧道。

上面的命令确实有效。

相关内容