我正在尝试通过本地转发来执行 ssh 隧道传输到远程 MySQL 主机,该主机通过非标准(端口转发)ssh 端口 2200 内部映射到服务器的端口 22。
首先,我知道这是可能的,因为我可以配置 MySQL Workbench 来建立这样的连接。(MySQL Workbench 提供内置的 ssh 隧道连接)。在 SSH 主机的配置中,我输入了 mysql-server:2200,并正常配置了连接的其余部分,它就可以正常工作了。
问题是当我尝试使用非标准目标端口 2200 建立永久 ssh 隧道时出现的。标准命令(默认端口 22)的形式如下:
ssh -g -C -N -L 3307:127.0.0.1:3306 mysql-server
我只是找不到放置非标准 ssh 目标端口的地方。它会导致主机密钥验证错误,格式如下:
ssh -g -C -N -L 3307:127.0.0.1:3306 -p 2200 mysql-server
它给出了一个不可解析的目标主机,形式如下:
ssh -g -C -N -L 3307:127.0.0.1:3306 mysql-server:2200
它使用以下形式给出与主机的连接超时:
ssh -g -C -N -L 3307:127.0.0.1:3306 mysql-server 2200
它给出(另一个)主机密钥验证错误,形式如下:
ssh -g -C -N -L 3307:127.0.0.1:3306 mysql-server -p 2200
将 2200 端口放在 mysql-server 下的 ~/.ssh/config 中没有什么区别。
我怎样才能让它工作?
答案1
好的 - 这归结为私钥具有不正确的权限。我最初没有检测到这一点,因为我正在使用应用程序为 ssh 隧道创建作业。当我进入命令行时,ssh 发出抱怨,问题变得明显。在更正密钥文件的权限后,它可以在默认端口上运行,之后,它可以在非默认端口上运行。感谢大家的帮助。