在Windows下同台电脑Git配置多个SSH 您所在的位置:网站首页 gitlab配置sshkey 在Windows下同台电脑Git配置多个SSH

在Windows下同台电脑Git配置多个SSH

2023-05-28 21:06| 来源: 网络整理| 查看: 265

背景

当一台电脑上有多个git账号时,比如: a. 一个gitee,用于公司内部的工作开发; b. 一个github,用于自己进行一些开发活动; C. 一个gitlab,远程仓库的地址在服务器上做了ip端口转发; 想在git上同时使用,互不干扰,该如何处理?

一、生成密钥 ssh-keygen -t rsa -C "xxx邮箱[email protected]"

image.png 若使用同个邮箱,则在~.ssh文件夹下复制id_rsa(生成私钥命名的对应文件)和id_rsa.pub(生成公钥命名的对应文件)文件,然后文件重命名; 若使用不同邮箱,则重复上面的命令,以此类推。

ssh-keygen -t rsa -C "xxx邮箱[email protected]"

注意!!! 生成密钥的邮箱与仓库管理管理代码设置的邮箱要保持一致!

二、git识别新增的key(重要!!!) ssh-agent bash ssh-add ~/.ssh/id_rsa_gitee ssh-add ~/.ssh/id_rsa_gitlab ssh-add ~/.ssh/id_rsa_github 三、在~/.ssh/ 目录下新建或者修改config文件(关键!!!)

image.png

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 key

拷贝~/.ssh/id_rsa_github.pub和~/.ssh/id_rsa_gitlab.pub文件里面的内容, 然后打开对应的托管平台设置ssh-keys密钥的页面,把复制的内容粘贴进来就好了。

image.png 这样一来,我们就把服务器上面的key跟托管平台进行了关联。

五、远程测试ssh链接

测试config文件设置的git账号是否与托管平台的密钥部署设置成功

ssh -T [email protected] ssh -T [email protected] ssh -T [email protected] # xxx! You’ve successfully authenticated, but GitHub does not provide bash access. # 出现上述提示,连接成功

image.png

六、克隆/拉取项目 git clone [email protected]: one的用户名/xxx.git

image.png

番外一: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文件把私钥配置进去)输入以下命令出现以下报错:

image.png 解决方案:

~.ssh目录下是否有config文件,没有的话创建一个; 在config里面添加: Host * HostKeyAlgorithms +ssh-dss

二、克隆项目,git报错:OpenSSL SSL_read: Connection was reset, errno 10054

image.png 解决方案:

网络不稳定,连接超时导致; 1)首先检查C盘下host文件中的github相关访问的域名对应的ip是否正确;不正确则修改,参考无法连接github,修改host映射。 2)若IP正确,则多克隆几次; 修改设置,解除ssl验证。进入Git Bash Here,输入命令git config --global http.sslVerify "false"

image.png 此时,再执行git克隆操作,git报错:Logon failed, use ctrl+c to cancel basic credential prompt

image.png 解决方案:

在git bash 命令行下输入如下的命令: setx GIT_TRACE "" setx GCM_TRACE "" 删除tenant.cache 删除 AppData\Local\GitCredentialManager目录下的tenant.cache文件

此时,再次执行git克隆操作,git还是报错:The authenticity of host 'github.com (20.205.243.166)' can't be established. 解决方案:

首先查看自己用户目录下的.ssh目录下是否有三个密钥文件。

image.png 若只有两个的话,输入yes回车之后,会生成一个known_hosts文件。

image.png

用 ssh -T [email protected]测试一下

image.png 图上可以明显看出缺少了公钥。 若公钥文件没有生成,则操作生成密钥的命令操作; 若密钥的文件已经生成,则把对应的公钥添加进GitHub上。 此刻重新操作克隆成功。

注意克隆是公有仓库还是私有仓库的区别!!! 私有仓库不能使用http/https进行克隆,用ssh进行克隆才可以,否则会报错。

三、git克隆报错:ssh_exchange_identification: Connection closed by remote host

image.png

原因:

密钥问题; config中的配置问题:端口配置出错!!(关键问题所在) # 配置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 // 用户名

config文件配置好中的端口号重新配置为22,则成功了。

image.png

四、出现如下报错:

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。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有