通过 SSH 将本地主机流量转发到生产机器数据库的端口

通过 SSH 将本地主机流量转发到生产机器数据库的端口

在 Windows 上,我曾经使用 Bitvise Tunnler 通过 SSH 连接将我电脑的 localhost:33306 上的所有流量转发到我的服务器 - 然后从那里转发到 mysqlserver:3306 服务器数据库。

PC:33306 -> server:3306 -> databaseserver:3306

现在我正在使用 Linux,我发现使用以下命令可以随时随地轻松地通过 SSH 进行连接:

ssh [email protected]

但是,我不确定如何使用 ssh 选项复制此端口转发。如果只是从一台计算机复制到另一台计算机,我想我可以这样做...

ssh -L 33306:localhost:3306 [email protected]

更新

我尝试使用以下 SSH 进行连接,并且连接似乎有效。

ssh -L 33306:localhost:3306 [email protected]

但是 phpMyAdmin 在尝试连接到其他服务器时抛出了此错误

#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)

然后我尝试

ssh -L 33306:db.server.com:3306 [email protected]

phpMyAdmin 抛出了这个错误

#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)

跑步netstat -an | 更多节目

tcp6       0      0 ::1:33306               :::*                    LISTEN   

再次,流程应该是这样的:

mypc -> server -> otherdbserveronprivatelan

答案1

这应该可以:

ssh -L 33306:数据库服务器:3306[电子邮件保护]

答案2

它确实有效。但是,当我尝试连接时,我仍然使用“localhost”而不是“127.0.0.1”。

对于命令行 ssh,这是

ssh -L 3333:mysql主机名.youdomain.com:3306 [电子邮件保护]

然后,您在 mysql 前端打开到 127.0.0.1 端口 3333 的连接。请注意,它必须是 127.0.0.1,而不是 localhost,因为后者将使用 UNIX 域套接字。

http://blog.dreamhosters.com/kbase/index.cgi?area=2991

答案3

这是不是不是 ssh 问题,而是 MySQL 问题。对于 MySQL,您需要确保用户已被授予该数据库的访问权限。这通常通过以下方式完成:

GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host' IDENTIFIED BY 'password';

这里要注意的主要内容是'host'设置。由于您是通过 SSH 建立隧道的,因此您需要 才能'username'@'localhost'工作。通配符设置'username'@'%'不适用于本地主机连接。

相关内容