SSH key 连接不同github仓库
# 一文搞定!不同远程GitHub仓库的SSH key(ED25519新版)配置方法
使用GitHub时,SSH key是最安全便捷的认证方式,无需反复输入账号密码。很多人困惑:管理多个仓库(个人/公司、不同账号)时,如何配置SSH key实现无感切换?核心答案:为不同场景配置独立的ED25519新版SSH key(替代旧版RSA,更安全高效,你提及的55219即指此类型),再通过配置文件映射对应关系即可。本文全程实操,新手可直接跟着走。
一、前置知识:为什么需要多key配置?
默认生成的SSH key(旧版RSA)存于~/.ssh目录,若只配置一套,操作不同账号仓库时,GitHub无法区分身份,会提示权限不足。例如个人账号key无法访问公司仓库,因此需为不同账号/场景配置独立ED25519 key。
二、核心操作:分场景配置ED25519 SSH key
以下命令适用于Windows(Git Bash)、Mac、Linux,全程在终端执行,步骤简洁且关键。
场景1:同一GitHub账号,多个仓库(简化配置)
同一账号下所有仓库,一套ED25519 key即可通用,配置一次终身可用。
检查本地key:执行以下命令,若有
id_ed25519和id_ed25519.pub,说明已有新版key;无则继续。ls ~/.ssh生成ED25519 key:替换邮箱为GitHub绑定邮箱,回车留空路径和密码(或设置密码更安全):
ssh-keygen -t ed25519 -C "your_email@example.com"添加公钥到GitHub:
执行以下命令,复制完整输出(从ssh-ed25519开始到邮箱结束):
cat ~/.ssh/id_ed25519.pub登录GitHub→Settings→SSH and GPG keys→New SSH key,粘贴公钥并保存。
测试连接:执行以下命令,输出成功认证提示即配置完成:
ssh -T git@github.com
场景2:不同GitHub账号,多个仓库(核心场景)
个人+公司账号场景,需为每个账号生成独立ED25519 key,通过~/.ssh/config文件映射。
生成多组ED25519 key:假设个人账号user1(邮箱user1@example.com)、公司账号user2(邮箱user2@company.com),执行以下命令:
# 个人账号keyssh-keygen -t ed25519 -C "user1@example.com" -f ~/.ssh/id_ed25519_user1# 公司账号keyssh-keygen -t ed25519 -C "user2@company.com" -f ~/.ssh/id_ed25519_user2生成后,~/.ssh会出现4个文件(两组公私钥)。公钥对应添加到账号:将id_ed25519_user1.pub添加到user1账号,id_ed25519_user2.pub添加到user2账号(操作同场景1第3步)。
配置config文件(关键):
创建文件:
touch ~/.ssh/config编辑文件(vim ~/.ssh/config),添加以下内容(替换对应信息):
# 个人账号Host github.com-user1HostName github.comUser gitIdentityFile ~/.ssh/id_ed25519_user1# 公司账号Host github.com-user2HostName github.comUser gitIdentityFile ~/.ssh/id_ed25519_user2保存退出(vim按ESC,输入:wq回车)。
测试连接:分别执行以下两条命令,输出对应账号成功提示即可:
ssh -T git@github.com-user1ssh -T git@github.com-user2克隆/关联仓库:
个人仓库:
git clone git@github.com-user1:user1/my-personal-repo.git公司仓库:
git clone git@github.com-user2:user2/my-company-repo.git已克隆仓库修改远程地址:
git remote set-url origin 对应Host地址
场景3:同一账号,不同仓库(特殊需求)
同一账号需区分仓库(如工作/个人),配置方法同场景2,只需将两组ED25519 key都添加到同一个GitHub账号,再配置config文件即可。
三、常见问题排查(避坑)
问题1:ssh: connect to host github.com port 22: Connection refused
原因:端口22被拦截,解决:在config文件对应Host下添加以下配置:
Port 443
问题2:Permission denied (publickey)
原因:公钥添加错误、config配置有误、私钥权限过高。解决:执行以下命令修改权限,重新检查公钥和config:
chmod 600 ~/.ssh/id_ed25519_*
问题3:Could not resolve hostname
原因:Host拼写错误,解决:确保克隆命令中的Host与config文件完全一致。
四、总结
核心逻辑:ED25519新版key生成+config文件映射。同一账号多仓库用一套key,不同账号多仓库用多套key,重点注意私钥权限、公钥对应账号,配置后即可无感切换,安全高效。
