Git SSH 方式无法 push 踩坑

引言

我们知道使用 git 管理的项目可以通过两种格式的 url 来获取,分别是 HTTPSSH

  • 使用 HTTP 方式操作 git 工程需要输入对应的账号和密码,当然为了方便也可以使用诸如 TortoiseGit 这样的图形化工具来管理 Git 工程,而且其中自带记住账号和密码的功能,因此只需输入一次账号密码即可。

  • 使用 SSH 的方式拉取 Git 项目则需要提前配置好 SSH key ,也就是我们常说的公钥和私钥

 

遇到的问题

假如直接在本地安装 Git 之后,使用 ssh-keygen 去生成公钥和秘钥,然后把用户目录下的 .ssh 目录中 id_rsa.pub 文件中的内容配置到目标项目的部署秘钥中,例如 Gogs 中:项目右上角的 仓库设置 ——> 管理部署密钥 ,然后添加上面生成的公钥内容。

SSH url 的格式 :git@xxx: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-keygen 生成了公钥和私钥即可用;

  • 选择 TortoiseGitPlink 则需要使用 PuTTYgen.exe 工具生成 .ppk 文件,然后再使用 Git 自带的工具 Pageant.exe开始\所有程序\TortoiseGit)去添加之前创建的 .ppk 文件才可使用。


参考


微信公众号「何乐不为呢」,一个码农的技术笔记和唠叨。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值