每次从 github 拉取而无需身份验证

Posted

技术标签:

【中文标题】每次从 github 拉取而无需身份验证【英文标题】:Pull from github without authentication every time 【发布时间】:2013-11-11 04:42:30 【问题描述】:

有没有办法生成证书等,以便我的产品服务器可以从我的 github 存储库中提取,而无需我每次都进行身份验证?

【问题讨论】:

【参考方案1】:

您可以create an access token 并将其用作用户名(无需密码)。

获得访问令牌后,克隆存储库:

git clone https://<your-access-token>@github.com/username/repo.git

然后你可以不用每次都进行身份验证来拉取。

这是最简单的方法,但会将令牌纯文本存储到 .git/config 以提高安全性,您可以setup password caching 并照常克隆 https:

git clone https://github.com/username/repo.git

如果您想删除服务器对存储库的访问权限,只需删除您的application settings 中的访问令牌即可。

我也更喜欢在部署环境中使用 https 而不是 ssh。有时我们没有足够的访问权限来处理 ssh,但即使在更便宜的托管服务上也可以使用 https 访问 github。

【讨论】:

这应该是公认的答案。这更健壮,可用于部署系统。 如果您的用户名与 repos 不同,我认为这必须是 git clone https://&lt;your-user-name&gt;:&lt;your-access-token&gt;@github.com/username/repo.git 也适用于我的私人存储库上的git clone https://&lt;your-access-token&gt;@github.com/username/repo.git。看起来用户不是必需的。【参考方案2】:

这就是Deploy Keys 的用途。

那篇帮助文章解释了 GitHub 支持的部署身份验证方法,并提供了一些指导来帮助在它们之间做出决定。

根据我有限的经验,部署 SSH 密钥可能是最简单的设置。

【讨论】:

【参考方案3】:

生成 ssh 密钥

cd ~/.ssh 
ssh-keygen -t rsa -C "your-email-address"
touch config

粘贴到配置中

 Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/YOUR_KEY

将公钥粘贴到 github 部署密钥设置

cat YOUR_KEY.pub

将远程从 http 设置为 ssh

git remote set-url origin ssh://git@github.com/USERNAME/REPOSITORY.git

【讨论】:

set-url origin ssh 是我这边缺少的部分。谢谢。【参考方案4】:

我认为这可以通过使用凭证缓存和使用 .netrc 文件来完成。 Please Check This

【讨论】:

以上是关于每次从 github 拉取而无需身份验证的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中使用 smbj 模块无需身份验证

无需每次身份验证即可使用 Google Api 的任何方式?

从 Spring 控制器调用安全方法,无需身份验证

使用密码短语(如 SSH 密钥)存储 Github / Gitea 身份验证令牌

Spotipy - 从公共播放列表访问曲目,无需身份验证

如何使用 GH CLI 对 Github Action 中的远程仓库进行身份验证?