第三台机器上的 SSH 代理和 MySQL

第三台机器上的 SSH 代理和 MySQL

我想从我的主机连接到远程 MySQL,但是主机位于 ssh 代理后面,就像这样。

我有 3 个主机遇到这个问题

  • A:我的本地机器(可以 ssh 到 B)
  • B:可以通过 SSH 连接到 C 的中间机器
  • C:运行 MySQL 的远程服务器,仅允许来自本地主机的连接(授予)

我使用 ~/.ssh/config 允许我从 A 直接 ssh 到 C(使用 B 作为代理)。

Host B
    ProtocolKeepAlives 30
    HostName hostnameofB

Host C
    ProtocolKeepAlives 30
    ProxyCommand ssh -q B nc -q0 hostnameofC 22
    LocalForward 3336 localhost:3306
    Port 21343

我使用 -vvv 打开从 A 到 C 的 ssh 并看到以下内容:

debug1: Local connections to LOCALHOST:3336 forwarded to remote address localhost:3306

然后我尝试从 A 登录 MySQL:

mysql -uMyUsername -pMyPassword  DatabaseName -P3336 -h127.0.0.1
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

(如果我尝试使用 -hlocalhost,它将尝试登录到我的本地 MySQL 服务器,即使我使用不同的端口)

在我的 SSH -vvv 窗口中我还看到以下内容:

client-session (t4 r0 i0/0 o0/0 fd 7/8 cc -1)

C MySQL 服务器上没有日志。

有什么好的建议吗?

答案1

在我看来,您在主机 A 上运行的 mysql 命令试图连接到 A 上的端口 3366;我没有看到任何地方转发 A:3366。尝试添加从 A 到 B 的转发规则,或者如果没有进行过滤,您可以简单地将 mysql 命令更改为命中主机 B,而不是引用 A 的“-h127.0.0.1”。

相关内容