如何创建多个EdDSA SSH密钥?解决多GitHub账号密钥冲突
如何创建多个EdDSA(id_ed25519)SSH密钥并用于多GitHub账号
一、创建自定义名称的EdDSA密钥
你之前的命令错误在于把自定义名称和密钥类型混在一起了。正确的做法是用-t指定密钥类型为ed25519,再用-f参数指定自定义文件名。示例命令:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github_work -C "workemail@example.com"
-t ed25519:指定生成EdDSA类型的密钥-f ~/.ssh/id_ed25519_github_work:指定密钥文件的路径和名称(这里命名为针对工作账号的密钥)-C "workemail@example.com":添加注释,方便识别密钥用途
执行命令后,按提示设置密码(可选,建议设置以提升安全性),就能生成两个文件:id_ed25519_github_work(私钥)和id_ed25519_github_work.pub(公钥)。重复这个命令,替换文件名和注释,即可生成多个不同的EdDSA密钥。
二、配置多GitHub账号使用不同密钥
GitHub不允许同一SSH密钥绑定多个账号,需要通过SSH配置文件让不同的GitHub操作匹配对应的密钥:
- 创建/编辑SSH配置文件
打开终端,编辑~/.ssh/config文件(如果不存在则直接创建):
nano ~/.ssh/config
- 添加账号配置块
为每个GitHub账号添加独立的配置,示例:
# 工作GitHub账号配置 Host github.com-work HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github_work # 个人GitHub账号配置 Host github.com-personal HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github_personal
Host:自定义别名,后续操作时用来替代github.comHostName:实际的GitHub域名,固定为github.comUser:固定为git(GitHub SSH操作的默认用户)IdentityFile:指定该账号对应的私钥路径
- 将公钥添加到对应GitHub账号
对每个密钥,复制公钥内容:
cat ~/.ssh/id_ed25519_github_work.pub
登录对应的GitHub账号,进入Settings -> SSH and GPG keys,点击New SSH key,粘贴公钥内容并保存。
- 使用对应密钥操作仓库
- 克隆新仓库时,用自定义Host别名替代
github.com:git clone git@github.com-work:workaccount/repo-name.git - 对已有的仓库,修改远程地址为对应别名:
git remote set-url origin git@github.com-work:workaccount/repo-name.git
这样就能实现不同GitHub账号使用各自的EdDSA密钥进行操作。
内容的提问来源于stack exchange,提问作者Jonca33
相关产品推荐
相关产品推荐

