引言
我们知道使用 git 管理的项目可以通过两种格式的 url 来获取,分别是 HTTP 和 SSH
-
使用 HTTP 方式操作 git 工程需要输入对应的账号和密码,当然为了方便也可以使用诸如 TortoiseGit 这样的图形化工具来管理 Git 工程,而且其中自带记住账号和密码的功能,因此只需输入一次账号密码即可。
-
使用 SSH 的方式拉取 Git 项目则需要提前配置好 SSH key ,也就是我们常说的公钥和私钥
遇到的问题
假如直接在本地安装 Git 之后,使用 ssh-****** 去生成公钥和秘钥,然后把用户目录下的 .ssh 目录中 id_rsa.pub 文件中的内容配置到目标项目的部署秘钥中,例如 Gogs 中:项目右上角的 仓库设置 ——> 管理部署** ,然后添加上面生成的公钥内容。
SSH url 的格式 :
[email protected]:xxx/xxx.git
发现可以 git clone 拉取工程 ,也可以通过 git pull 更新工程,但是没办法 git push 到远端仓库,提示如下:
Gogs: Key permission denied
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
正确配置
正确的方式是将公钥内容添加到 账户设置 ——> SSH 秘钥中,这才是真正配置 SSH 的地方,直接将其配置到项目中的话,就会出现只能 pull 不能 push 的问题。
TortoiseGit 配置
Settings ——> General ——> Re-run First Start Wizard (中文版:鼠标右键 ——> 常规设置 ——> 重新运行首次启动向导)然后一直 next 直到 Authentication and credential store 页面,这里有两种方式 :TortoiseGitPlink (默认)和 OpenSSH ,区别其实就是依赖的客户端不同,使用时也有所区别:
-
选择
OpenSSH的方式只要使用了ssh-******生成了公钥和私钥即可用; -
选择
TortoiseGitPlink则需要使用PuTTYgen.exe工具生成.ppk文件,然后再使用 Git 自带的工具Pageant.exe(开始\所有程序\TortoiseGit)去添加之前创建的.ppk文件才可使用。
参考
微信公众号「何乐不为呢」,一个码农的技术笔记和唠叨。