发布时间:2026-08-31 15: 38: 00
Navicat可以通过SSH隧道访问不能直接暴露数据库端口的远程服务器,连接时先建立到SSH服务器的加密通道,再由SSH服务器访问数据库。配置中同时存在两组主机、端口和账号:一组属于数据库,另一组属于SSH服务器。出现连接超时时,应先判断SSH通道本身是否能够建立,再检查隧道建立后能不能从SSH服务器访问数据库,避免把数据库地址、SSH地址和两套账号混在一起修改。
一、Navicat怎么设置SSH隧道连接
Navicat 17可以在数据库连接属性的SSH页面直接开启隧道,支持密码和公钥认证。数据库连接参数仍然填写在常规页面,SSH账号不能替代数据库账号。
1、先填写数据库连接信息
①打开【Navicat】,选择【连接】并创建对应数据库连接。
②进入连接属性的【常规】页面。
③填写【连接名】。
④在【主机】中填写数据库服务器从SSH服务器一侧能够访问到的地址。
⑤数据库与SSH服务位于同一台服务器时,可以先填写【127.0.0.1】或数据库实际监听地址。
⑥数据库位于另一台内网服务器时,填写该数据库的内网IP或主机名。
⑦填写数据库【端口】,例如MySQL通常为【3306】,PostgreSQL通常为【5432】。
⑧填写数据库【用户名】和【密码】。
这里的【主机】不是固定填写本机地址,而是要按照SSH服务器访问数据库时看到的网络地址设置。如果数据库在独立内网主机上,把它误写成127.0.0.1,隧道能够建立,后面的数据库连接仍然会失败。
2、开启SSH隧道
①切换到连接属性的【SSH】页面。
②勾选【使用SSH隧道】。
③在【主机】中填写SSH服务器公网IP或域名。
④在【端口】中填写SSH服务端口,默认通常为【22】。
⑤填写SSH服务器的【用户名】。
⑥使用账号密码登录时,把【认证方法】设置为【密码】。
⑦填写SSH登录密码。
⑧保存连接设置。
⑨执行一次【测试连接】。
SSH页面的用户名属于SSH服务器账号,与常规页面中的数据库用户名是两套身份。例如SSH使用linuxuser登录,并不代表MySQL也需要使用linuxuser。
3、使用私钥进行SSH认证
①在【SSH】页面找到【认证方法】。
②选择【公钥】。
③在【私钥】中选择实际使用的Private Key文件。
④私钥设置过密码时填写【密码短语】。
⑤确认服务器端已经保存与该私钥对应的公钥。
⑥重新执行【测试连接】。
⑦认证失败时,先使用其他SSH客户端验证同一私钥能否登录。
Windows环境如果使用SSH Agent,Navicat也支持通过对应的Agent配置读取身份信息,但普通单服务器环境直接指定Private Key更便于排查。
二、Navicat SSH隧道连接超时如何排查
SSH连接超时和密码错误并不是一类问题。长时间等待后才提示Timeout,更应该先检查网络地址、SSH端口和防火墙;能够迅速连接到SSH服务器但认证被拒绝,再处理账号和密钥。
1、确认SSH服务器和端口可以访问
①检查【SSH】页面的【主机】有没有写成数据库内网地址。
②重新确认SSH服务器当前公网IP或域名。
③核对SSH实际监听端口是否仍为【22】。
④如果服务器改用了其他端口,把Navicat中的【端口】同步修改。
⑤在Windows上可以使用【Test-NetConnection SSH服务器地址-Port 22】测试端口。
⑥也可以使用【ssh-p 22用户名 服务器地址】单独测试SSH登录。
⑦外部SSH客户端同样超时时,继续检查云服务器安全组和系统防火墙。
⑧确认当前客户端网络没有屏蔽目标SSH端口。
如果TCP端口本身不能连通,修改Navicat里的数据库密码、数据库端口或Connection Timeout不会解决SSH超时。
2、检查SSH认证信息
①确认【用户名】属于SSH服务器,而不是数据库用户。
②密码认证时重新输入SSH账号密码。
③公钥认证时重新选择正确的【私钥】。
④私钥经过加密时确认【密码短语】正确。
⑤使用同一账号和密钥在独立SSH客户端登录。
⑥如果命令行能够登录而Navicat仍然失败,再检查Navicat中选择的认证方式和密钥文件。
⑦服务器关闭密码登录后,不要继续使用【密码】方式测试。
先把SSH登录单独验证成功,可以把网络层和身份认证问题与数据库连接问题分开。
3、检查服务器是否允许端口转发
出现“SSH客户端能够登录,但Navicat始终不能建立隧道”时,需要检查SSH Server的端口转发配置。
①登录Linux SSH服务器。
②检查【/etc/ssh/sshd_config】。
③找到【AllowTcpForwarding】。
④确认没有设置为【no】。
⑤需要使用SSH端口转发时应允许该功能。
⑥服务器存在用户级或Match规则时,再确认当前账号没有被单独禁止转发。
⑦配置修改后由服务器管理员重新加载SSH服务。
⑧返回Navicat重新测试连接。
Navicat官方把【AllowTcpForwarding】列为“其他SSH客户端能登录,但Navicat无法建立SSH隧道”时的直接检查项。
三、SSH连接正常但Navicat仍超时怎么继续检查
SSH认证成功只能证明客户端已经到达跳板服务器,后面还要建立从SSH服务器到数据库的连接。如果此时等待较长时间再报错,就应把检查位置转到常规页面中的数据库主机和数据库端口。
1、核对数据库主机填写方式
①重新打开连接的【常规】页面。
②检查【主机】是不是数据库从SSH服务器一侧能够访问的地址。
③数据库就在SSH服务器本机时测试【127.0.0.1】。
④数据库位于内网其他机器时改为实际内网IP或DNS名称。
⑤确认【端口】填写的是数据库端口,不是SSH端口。
⑥保存后重新测试。
例如SSH服务器是公网服务器A,数据库实际位于内网服务器B,那么SSH页面填写A,而常规页面的数据库主机应填写A能够访问到的B地址。
2、从SSH服务器测试数据库端口
①先正常SSH登录服务器。
②测试服务器能否连接目标数据库主机。
③检查MySQL的【3306】、PostgreSQL的【5432】或实际自定义端口。
④端口无法连接时检查数据库服务是否已经启动。
⑤检查数据库是否监听正确网卡地址。
⑥查看SSH服务器到数据库服务器之间的防火墙规则。
⑦数据库位于云内网时,检查对应安全组或访问控制规则。
如果SSH已经成功,而这一段网络不可达,Navicat最终仍会表现为数据库连接超时。
3、再检查连接超时参数
①打开连接的【高级】设置。
②找到【连接超时】。
③网络延迟确实较高时,可以适当增加等待时间。
④连接建立后经常因长时间空闲断开时,再检查【Keepalive interval】。
⑤修改后重新测试。
⑥错误主机、错误端口或服务器无法访问时,不要靠持续增加Connection Timeout处理。
【连接超时】控制等待连接建立的时间,【Keepalive interval】主要用于保持已经建立的连接,两者不能代替网络和服务器端配置检查。
总结
Navicat设置SSH隧道时,需要把数据库连接参数和SSH连接参数分开填写,并确认数据库主机地址是从SSH服务器角度能够访问的地址。发生超时时,可以先验证SSH主机和端口,再检查账号认证及SSH端口转发;SSH已经正常后,则继续测试SSH服务器到数据库服务器之间的网络和数据库监听状态。这样可以较快判断故障发生在隧道建立之前还是数据库连接阶段。如需进一步了解Navicat SSH隧道配置、远程数据库连接与连接超时排查方法,欢迎联系咨询。
展开阅读全文
︾