同时配置 Github 和 Gitee 的 SSH 免密提交
清除 git 的全局设置
首先查看本地所有相关配置,避免影响
1 | # 查看是否设置 |
Windows 中配置
任意地方打开 cmd 控制台,输入以下内容:
ssh-keygen -t rsa -f %USERPROFILE%/.ssh/id_rsa_github -C "your_email@github.com"
id_rsa_github 为生成的文件名,需要与其他的区分开
your_email@github.com 为你在平台关联的邮箱,如:test@gmail.com
配置多个 SSH 密钥
1 | # 为 GitHub 生成 SSH 密钥 |
完成后会在
C:/Users/xxx/.ssh /目录下生成以下文件
- id_rsa_github
- id_rsa_github.pub
- id_rsa_gitee
- id_rsa_gitee.pub
将生成的对应.pub文件打开,将数据拷贝添加到对应平台的SSH配置中(全量拷贝)
如:id_rsa_github.pub 中的全部内容,拷贝到github 的SSH配置中,如图所示:
配置 SSH Config 文件
在 C:/Users/xxx/.ssh/config 文件中添加以下内容,以区分不同平台的密钥:
1 | # Gitee |
验证是否生效(在任意路径):
1
2 ssh -T git@gitee.com
ssh -T git@github.com出现以下情况,表示成功,否则配置错误(IdentityFile需要绝对路径):
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
配置文件权限
config 、id_rsa_github和 id_rsa_gitee 配置文件需要删除其他用户的权限,只保留管理员和当前用户
右键需配置的文件,查看属性,打开“安全”一栏
打开“高级” ,“禁用继承”
返回,在“安全”一栏的“组或用户名” 中,删除非当前用户和系统管理员的账号,如:Everyone
Linux 中配置
配置多个 SSH 密钥
1 | # 为 GitHub 生成 SSH 密钥 |
完成后会在~/.ssh / 目录下生成以下文件
- id_rsa_github
- id_rsa_github.pub
- id_rsa_gitee
- id_rsa_gitee.pub
将生成的对应.pub文件打开,将数据拷贝添加到对应平台的SSH配置中(全量拷贝)
如:id_rsa_github.pub 中的全部内容,拷贝到github 的SSH配置中
配置 SSH Config 文件
在 ~/.ssh/config 文件中添加以下内容,以区分不同平台的密钥:
1 | # Gitee |
验证是否生效(在任意路径):
1
2 ssh -T git@gitee.com
ssh -T git@github.com出现以下情况,表示成功,否则配置错误(IdentityFile需要绝对路径):
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
配置文件权限
config 、id_rsa_github和 id_rsa_gitee 配置文件需要删除其他用户的权限
chmod 644 ~/.ssh/config
同时推送多个远程仓库
在本地项目中,可以同时关联 Gitee 和 GitHub 的远程仓库:
1 | # 添加 GitHub 远程仓库 |
仅推送单个远程仓库
1 | # 如果只推送其中一个 github 仓库 |
同时配置多个 Github 账号
详细教程和说明,可参考:博客
以 Linux 环境为例,再以上的基础上再添加一个 github 的账号配置
1 | # 为 GitHub 生成 SSH 密钥 |
完成后会在~/.ssh / 目录下生成以下文件
- id_rsa_github_blog
- id_rsa_github_blog.pub
将生成的 id_rsa_github_blog.pub 文件打开,将数据拷贝添加到github平台的SSH配置中(全量拷贝)
在 ~/.ssh/config 文件中添加以下内容(注意区分Host):
1 | # GitHub |
推送仓库
1 | # 注意:修改为上面配置中对应的 Host,否则会定向到之前的配置中 |
SSH 连接异常(提交失败)
Git 提交时报错:
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
用以下三个命令测试,均无法连接
1 | ssh -T git@github.com |
解决方法:
修改~/.ssh/config 配置,Port 改为 443,HostName 改为 ssh.github.com
1 | # GitHub |