使用我的用户,我可以使用以下命令通过外部服务器建立隧道,在内部服务器上设置到 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,以便他们只能使用第一台服务器作为隧道。
上面的命令确实有效。