当一台电脑上有多个git账号时,比如:
a. 一个gitee,用于公司内部的工作开发;
b. 一个github,用于自己进行一些开发活动;
C. 一个gitlab,远程仓库的地址在服务器上做了ip端口转发;
想在git上同时使用,互不干扰,该如何处理?
ssh-keygen -t rsa -C "xxx邮箱[email protected]"
若使用同个邮箱,则在~.ssh文件夹下复制id_rsa(生成私钥命名的对应文件)和id_rsa.pub(生成公钥命名的对应文件)文件,然后文件重命名;
若使用不同邮箱,则重复上面的命令,以此类推。
ssh-keygen -t rsa -C "xxx邮箱[email protected]"
注意!!!
生成密钥的邮箱与仓库管理管理代码设置的邮箱要保持一致!
ssh-agent bash
ssh-add ~/.ssh/id_rsa_gitee
ssh-add ~/.ssh/id_rsa_gitlab
ssh-add ~/.ssh/id_rsa_github
Host *
HostKeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-rsa
# 配置gitlab(PS:http://192.XXX.XXS.205:90/users/sign_in)
Host 192.xxx.XX.205 // 远程仓库的地址,域名或ip(不带端口号),可以自定义
HostName 192.xxx.XX.205 // 远程仓库的真正的地址,域名或ip(不带端口号),不可更改
// Port 端口号,如果有做转发需要在这里填写端口号,没有就不必要填
Port 22 // 原本ip地址的端口号写的是90,奈何一直报错,尝试22成功了,22是ssh的端口号?!
IdentityFile ~/.ssh/id_rsa_gitlab // 识别key的文件 PreferredAuthentications publickey // 可以不用配置
User cai002 // 用户名
IdentitiesOnly yes // 可以不用配置
# 配置github.com
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
PreferredAuthentications publickey
User encod
IdentitiesOnly yes
# 配置gitee.com
Host gitee.com
HostName gitee.com
IdentityFile ~/.ssh/id_rsa_gitee
PreferredAuthentications publickey
User acai
IdentitiesOnly yes
拷贝~/.ssh/id_rsa_github.pub和~/.ssh/id_rsa_gitlab.pub文件里面的内容, 然后打开对应的托管平台设置ssh-keys密钥的页面,把复制的内容粘贴进来就好了。
这样一来,我们就把服务器上面的key跟托管平台进行了关联。
测试config文件设置的git账号是否与托管平台的密钥部署设置成功
ssh -T git@gitee.com
ssh -T git@192.168.1.205
ssh -T git@github.com
# xxx! You’ve successfully authenticated, but GitHub does not provide bash access.
# 出现上述提示,连接成功
git clone git@one.gitee.com: one的用户名/xxx.git
git全局设置用户名及邮箱
// 自定义用户名
git config --global user.name "用户名"
// 自定义邮箱
git config --global user.email "邮箱"
查看已经设置的git全局信息
git config -l
取消git全局设置的用户名及邮箱
git config --global --unset user.name
git config --global --unset user.email
新建文件夹下git设置局部的用户名及邮箱
git config user.name "用户名"
git config user.email "邮箱"
注意!!!
若局部设置了用户名及邮箱则会优先识别局部设置的,反之是识别全局设置的用户名及邮箱。因此不取消全局设置的用户名及邮箱都可以,只要config文件设置好就ok!
一、打开Git Bash客户端(管理员身份运行)执行测试命令测试是否配置成功(会自动在.ssh目录生成known_hosts文件把私钥配置进去)输入以下命令出现以下报错:
解决方案:
Host *
HostKeyAlgorithms +ssh-dss
二、克隆项目,git报错:OpenSSL SSL_read: Connection was reset, errno 10054
解决方案:
git config --global http.sslVerify "false"
此时,再执行git克隆操作,git报错:Logon failed, use ctrl+c to cancel basic credential prompt
解决方案:
setx GIT_TRACE ""
setx GCM_TRACE ""
tenant.cache
tenant.cache
文件此时,再次执行git克隆操作,git还是报错:The authenticity of host 'github.com (20.205.243.166)' can't be established.
\
解决方案:
若只有两个的话,输入yes回车之后,会生成一个known_hosts文件。
ssh -T [email protected]
测试一下注意克隆是公有仓库还是私有仓库的区别!!!
私有仓库不能使用http/https进行克隆,用ssh进行克隆才可以,否则会报错。
三、git克隆报错:ssh_exchange_identification: Connection closed by remote host
原因:
# 配置gitlab(PS:http://192.XXX.XXS.205:90/users/sign_in)
Host 192.xxx.XX.205
HostName 192.xxx.XX.205
Port 22 // 原本ip地址的端口号写的是90,奈何一直报错,尝试22成功了,22是ssh的端口号?!
IdentityFile ~/.ssh/id_rsa_gitlab // 识别key的文件 PreferredAuthentications publickey // 可以不用配置
User cai // 用户名
四、出现如下报错:
Unable to negotiate with 192.xxx.xx.205 port 22: no matching host key type found.
Their offer: ssh-rsa,ssh-dssfatal: Could not read from remote repository.
Please make sure you have the correct access rightsand the repository exists.
解决方案:
新建config文件,然后添加
Host *
HostKeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-rsa
若添加的配置测试是否有效,执行命令ssh -T [email protected]
,
若还是无效,看看是否添加密钥文件了,再次执行命令ssh-add \~/.ssh/id\_rsa
。