git拉取gitblit总报错?我教你一招!

1,017 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、报错背景

  • 今天写代码的时候,Windows 10突然就崩溃了。所以我不得不重装系统,重新配置开发环境。以往配置完ssh、安装完git后,按理说就可以正常 git pull 私有远程仓库中的项目。但是,git却报错无法连接gitblit远程仓库。

二、git及ssh配置过程

  1. git官网下载版本号为 2.35.3的git exe安装包,并进行安装。
  2. 在powershell里执行命令 ssh-keygen -t rsa,生成ssh密钥和公钥。
  3. 添加公钥到gitblit远程代码仓库中。

三、报错内容

Unable to negotiate with xxx.xxx.xxx.xxx port 22: no matching host key type found. Their offer: ssh-rsa, ssh-dss
fatal: Could not read from remote repository.

Please make sure you have the correct access rights 
and the repository exists.

四、报错分析

  • 上面的报错的意思是没有匹配到类型为 ssh-rsassh-dss 的主机秘钥。但我们明明配置了ssh-rsa密钥和公钥啊。为什么git会识别不到呢?原来最新版本的git需要配置一个config文件才能提交代码到远程的gitblit仓库中。

五、解决方法

  • 在路径: C:/User/你的用户名/.ssh 文件夹下新建一个名为 config 的文件。并在文件中写入如下内容:
Host*
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
  • 保存后即可正常连接远程gitblit仓库。

六、添加ssh公钥到gitblit

  1. 打开ssh公钥文件 C:\Users\你的用户名\.ssh\id_rsa.pub,并复制内容。 image.png

  2. 选择用户中心

搜狗截图20220418080050.png

  1. 选择 SSH Keys 菜单。把刚才复制的公钥粘贴到Key文本框中,然后选择权限。最后在发表文本框中给这个SSH Key起一个名字并点击添加按钮就可以使用SSH操作远程代码仓库了。

搜狗截图20220418080211.png

权限讲解:

权限讲解
V可以使用浏览器查看、订阅RSS、zip打包下载
R具有V的所有权限,还具有复制(克隆)远程仓库到本地的权限
RW具有R的所有权限,还具有推送到远程仓库的权限
RWC具有RW的所有权限,还具有创建远程分支的权限
RWD具有RWC的所有权限,还具有删除远程分支的权限
RW+具有RWD的所有权限,还具有回退远程分支的权限