连接GitHub仓库的SSH导致远程服务器SSH隧道无法使用
解决SSH密钥冲突导致pgAdmin隧道无法连接的问题
问题根源
并非端口22冲突,而是SSH客户端默认使用了GitHub的密钥去连接数据库服务器,导致认证失败。Windows下的SSH agent会自动加载所有已添加的密钥,连接远程服务器时会逐个尝试,数据库服务器不识别GitHub的密钥便会拒绝连接;同时Git连接GitHub后,SSH agent的状态变化也会干扰后续的数据库连接。
解决方案
1. 为数据库服务器生成专用SSH密钥
- 打开PowerShell,生成仅用于数据库服务器的密钥:
生成时可选择不设置密码,若设置需牢记后续输入。ssh-keygen -t ed25519 -f C:\Users\<你的用户名>\.ssh\db_server_key - 将生成的公钥文件
db_server_key.pub内容,添加到数据库服务器的~/.ssh/authorized_keys文件中。
2. 创建SSH配置文件区分不同连接
在C:\Users\<你的用户名>\.ssh目录下新建无后缀的config文件,内容如下:
# GitHub连接配置 Host github.com HostName github.com User git IdentityFile C:\Users\<你的用户名>\.ssh\<你的GitHub密钥文件名> IdentitiesOnly yes # 数据库服务器连接配置 Host db-server HostName <数据库服务器的IP或域名> User <数据库服务器的SSH用户名> IdentityFile C:\Users\<你的用户名>\.ssh\db_server_key IdentitiesOnly yes
IdentitiesOnly yes强制SSH仅使用指定密钥,避免自动尝试其他密钥引发混淆。- 分别为GitHub和数据库服务器配置独立的密钥路径,明确区分连接身份。
3. 修改pgAdmin的SSH隧道配置
打开pgAdmin编辑目标数据库服务器的连接:
- 将SSH隧道的“主机名/地址”改为
db-server(对应上述config文件中的Host别名),而非直接填写IP或域名。 - 确认SSH用户名与config配置一致,密钥文件选择
db_server_key。
4. 重置SSH agent并加载密钥
- 打开PowerShell杀死当前ssh-agent进程:
taskkill /IM ssh-agent.exe /F - 重启ssh-agent服务:
Start-Service ssh-agent - 分别添加两个密钥到agent(若密钥设置了密码,需输入对应密码):
ssh-add C:\Users\<你的用户名>\.ssh\<你的GitHub密钥文件名> ssh-add C:\Users\<你的用户名>\.ssh\db_server_key
5. 验证双连接可用性
打开VS Code测试Git的拉取/推送功能,确认GitHub连接正常;再测试pgAdmin的数据库连接,两者应可同时正常工作。
内容的提问来源于stack exchange,提问作者caldera
相关产品推荐
相关产品推荐

