本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、报错背景
- 今天写代码的时候,Windows 10突然就崩溃了。所以我不得不重装系统,重新配置开发环境。以往配置完ssh、安装完git后,按理说就可以正常
git pull私有远程仓库中的项目。但是,git却报错无法连接gitblit远程仓库。
二、git及ssh配置过程
- git官网下载版本号为
2.35.3的git exe安装包,并进行安装。 - 在powershell里执行命令
ssh-keygen -t rsa,生成ssh密钥和公钥。 - 添加公钥到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-rsa或ssh-dss的主机秘钥。但我们明明配置了ssh-rsa密钥和公钥啊。为什么git会识别不到呢?原来最新版本的git需要配置一个config文件才能提交代码到远程的gitblit仓库中。
五、解决方法
- 在路径:
C:/User/你的用户名/.ssh文件夹下新建一个名为config的文件。并在文件中写入如下内容:
Host*
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
- 保存后即可正常连接远程gitblit仓库。
六、添加ssh公钥到gitblit
-
打开ssh公钥文件
C:\Users\你的用户名\.ssh\id_rsa.pub,并复制内容。 -
选择用户中心
- 选择
SSH Keys菜单。把刚才复制的公钥粘贴到Key文本框中,然后选择权限。最后在发表文本框中给这个SSH Key起一个名字并点击添加按钮就可以使用SSH操作远程代码仓库了。
权限讲解:
| 权限 | 讲解 |
|---|---|
| V | 可以使用浏览器查看、订阅RSS、zip打包下载 |
| R | 具有V的所有权限,还具有复制(克隆)远程仓库到本地的权限 |
| RW | 具有R的所有权限,还具有推送到远程仓库的权限 |
| RWC | 具有RW的所有权限,还具有创建远程分支的权限 |
| RWD | 具有RWC的所有权限,还具有删除远程分支的权限 |
| RW+ | 具有RWD的所有权限,还具有回退远程分支的权限 |