前言
- 参考gitee文档中心:《Git 配置多个 SSH Key》
- 为不同账号配置不同的ssh Key,譬如公司上班时,可以区分不同的项目的提交人账号,在一台电脑上实现对github、gitee、公司内部git的访问
一、生成密钥(github和gitee示例)
- 命令格式:ssh-keygen -t
[密钥算法,一般采用rsa或ed25519]
-C "[密钥名称]
" -f ~/.ssh/[密钥文件名称]
- 生成gitee:ssh-keygen -t ed25519 -C "xxx_gitee" -f ~/.ssh/xxx_gitee_ed25519
- 生成github:ssh-keygen -t ed25519 -C "xxx_github" -f ~/.ssh/xxx_github_ed25519
- 生成文件的路径:~/.ssh (C:\Users\电脑用户名.ssh)
- 一条命令会生成两份文件,一份
xxx_gitee_ed25519
的密钥文件,一份则是带有.pub
后缀的公钥文件,公钥文件后面会用到
二、创建或者修改文件 ~/.ssh/config,添加如下内容:
# githubHost github.comHostName github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/xxx_github_ed25519
# giteeHost gitee.comHostName gitee.comPreferredAuthentications publickeyIdentityFile ~/.ssh/xxx_gitee_ed25519
配置文件参数
- Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名>和ssh文件
- HostName : 要登录主机的主机名
- IdentityFile : 生成的密钥文件路径
三、在对应git网站上添加ssh公钥
- 找到刚才生成密钥的文件夹(~./ssh),将带有
.pub
后缀的文件打开 - 分别访问github、gitee、公司git网址页面,找到个人设置,找到ssh选项,然后将对应的公钥添加进去
四、测试访问是否成功
- 上述步骤全部完成后,可以依次测试配置有效性
- 在git命令行中输入命令
ssh -T github.com
测试,成功则会返回如下示例内容
xxx@simple MINGW64 ~/.ssh
$ ssh -T git@github.com
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.xxx@simple MINGW64 ~/.ssh
$ ssh -T git@gitee.com
Hi xxx(@xxx)! You've successfully authenticated, but GITEE.COM does not provide shell access.
五、常见问题解决
- 如果使用命令
ssh -T github.com
时,返回内容显示ssh: connect to host github.com port 22: Connection refuse
首先使用ssh -vT git@github.com,查看建立ssh连接的过程
xxx@simple MINGW64 ~/.ssh $ ssh -vT git@github.com OpenSSH_9.9p2, OpenSSL 3.2.4 11 Feb 2025 debug1: Reading configuration data /c/Users/wuyiz/.ssh/config debug1: /c/Users/wuyiz/.ssh/config line 2: Applying options for github.com debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to github.com [127.0.0.1] port 22. debug1: connect to address 127.0.0.1 port 22: Connection refused ssh: connect to host github.com port 22: Connection refused
这里显示连接github.com的地址居然是::1和127.0.0.1。前者是IPV6的localhost地址,后者是IPV4的localhost地址
说明DNS解析有问题,导致github.com域名被解析成了localhost的ip地址,就自然连不上GitHub
可以尝试在命令行输入flushdns
,或者关闭电脑上启动的代理或加速器等软件
如果还是不行,只能手动在hosts
里增加域名映射了,具体可以网络搜索教程
- 如果使用命令
ssh -T github.com
时,返回访问被拒绝
建议优先检查上述配置步骤是否有配置错误或遗漏的地方,确保每一个步骤都没有问题