You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

连接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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:15:04