其实关于这两种认证方式也是适用于Gitlab等相关git.
很多时候,我们在打算克隆一个仓库到本地的时候,有两种方式可以选择,即:SSH和HTTPS.
克隆还好,但是需要推送的时候,也许会遇到权限,需要账号密码啊。

通过HTTPS方式克隆的代码到本地
如果遇到:

1
error: The requested URL returned error: 403 Forbidden while accessing

这是权限问题,可以修改.git/config文件追加用户名和密码,也可以直接敲下面命令:

1
git remote set-url origin https://youruser:password@github.com/user/repo.git

其实更常用的是SSH的方式来推送代码:

首先需要生成 SSH Keys,需要用到 ssh-keygen 命令。

1
ssh-keygen -t rsa -C "xxx@qq.com" -f ~/.ssh/git-github

简单介绍下参数含义:

-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱
-f 指定密钥文件存储文件名,会生成 git-github 和 git-github.pub 两个密钥文件

回车后,遇到提示输入 yes 即可,剩下一路回车,密钥文件就在指定路径下生成了。

接下来就去git管理界面的设置里面将 SSH 公钥添加到 Github
设置里面把git-github.pub公钥的内容复制进去添加就行了。

本地添加SSH别名
如果本机有其它密钥,连接 github 时可能不会自动使用刚生成的密钥,需要设置别名:

$ sudo vi ~/.ssh/config
加入类似的一段代码:

1
2
3
4
5
host git-github
user git
hostname github.com
port 22
identityfile ~/.ssh/git-github

保存退出。

测试连接

1
ssh -T git-github

Hi xxx! You’ve successfully authenticated, but GitHub does not provide shell access.

表示设置的 SSH Keys 认证通过,但 Github 不提供 shell 访问。
此时就可以正常使用 Github 了。