使用Tableplus/Laravel Forge连接数据库失败:用户名或密码错误
解决TablePlus连接Laravel Forge服务器数据库的SSH认证问题
核心问题定位
你遇到的SSH Error - Wrong username or password和私钥无效问题,本质是TablePlus的SSH认证逻辑与你本地Git Bash的认证方式不匹配,或是密钥/权限配置有误。以下是针对性的解决步骤:
步骤1:确认SSH登录方式(密码/密钥)
先明确你Git Bash中ssh forge@<IP_ADRESS>的登录逻辑:
- 若登录时需要输入密码:说明服务器开启了SSH密码认证,接下来检查TablePlus的SSH密码配置
- 若登录时无需输入密码直接进入:说明你的本地SSH Agent已加载对应私钥,你以为的“密码登录”实际是密钥自动认证,TablePlus用密码肯定登不上,必须使用对应私钥
步骤2:密码登录失败的修复
如果确实是密码登录场景:
- 检查TablePlus的SSH密码是否输入正确:避免复制粘贴时带空格、特殊字符(如
!@#$)未正确输入,建议手动输入一遍 - 登录Laravel Forge的服务器详情页,进入Security标签,确认
Password Authentication选项处于开启状态,若关闭则开启后重试 - 单独测试SSH连接:在TablePlus的连接设置里,仅填写SSH主机、用户名(
forge)、密码,点击「测试SSH连接」,先确保这一步能成功
步骤3:私钥无效的修复
如果是密钥登录场景,或密码登录不可行:
- 获取正确的私钥:登录Laravel Forge,进入目标服务器的SSH Keys标签,下载服务器对应的私钥文件(注意是私钥,不是公钥)
- 调整私钥权限:
- Windows:右键私钥文件→属性→安全→高级→禁用继承→删除所有非当前用户的权限→添加当前用户,仅赋予「读取」权限
- Mac/Linux:终端执行
chmod 600 /path/to/your/private-key.pem,确保只有当前用户能读取
- 检查私钥格式:TablePlus支持PEM格式私钥,如果你的私钥是OpenSSH格式(开头为
ssh-rsa),可通过命令转换:ssh-keygen -p -m PEM -f /path/to/your/private-key - 在TablePlus中加载私钥:选择「SSH密钥」认证方式,浏览选中处理好的私钥文件,点击「测试SSH连接」
步骤4:数据库连接URL的正确配置
通过SSH隧道连接时,数据库连接URL的格式应为:
mysql://root:<DB_PASSWORD>@127.0.0.1:3306/<DB_NAME>
- 主机必须填
127.0.0.1(SSH隧道映射的本地地址),不能填服务器公网IP - 替换
<DB_PASSWORD>为你的数据库密码,<DB_NAME>为项目对应的数据库名称
额外排查点
- 调整TablePlus的SSH版本:在SSH设置中,将「SSH Version」改为
SSH2,尝试切换加密算法(比如选择AES-256-CBC) - 重启TablePlus或本地SSH Agent(Windows:执行
ssh-agent -k再重新启动ssh-agent;Mac/Linux:执行ssh-add -D后重新添加私钥)
内容的提问来源于stack exchange,提问作者Marco Rifo
相关产品推荐
相关产品推荐

