每次从github拉取代码时不需要身份验证

22

有没有一种方式可以生成证书或类似物,以便我的生产服务器可以从我的 Github 仓库中获取代码而无需每次都进行身份验证?

4个回答

41
你可以创建访问令牌并将其用作用户名(无需密码)。
一旦你拥有了访问令牌,请克隆存储库:
git clone https://<your-access-token>@github.com/username/repo.git

然后,您可以在每次身份验证时进行拉取。这是最简单的方法,但会将令牌以明文形式存储到.git/config中。为了提高安全性,您可以设置密码缓存并像往常一样克隆https:
git clone https://github.com/username/repo.git

如果您想撤销服务器对存储库的访问权限,只需在应用设置中删除访问令牌即可。
我更喜欢在部署环境中使用https而不是ssh。有时我们没有足够的访问权限来处理ssh,但即使在更便宜的托管服务上,github的https访问也是可用的。

1
这应该是被接受的答案。这更加健壮,可以用于部署系统。 - GusDeCooL
1
如果您的用户名与存储库不同,我认为这应该是git clone https://<your-user-name>:<your-access-token>@github.com/username/repo.git - Andy Hayden
1
使用git clone https://<your-access-token>@github.com/username/repo.git命令,我可以在私有仓库中正常工作。看起来不需要用户。 - EHER

15
这就是部署密钥的作用。
那篇帮助文章解释了GitHub支持哪些部署身份验证方法,并给出了一些指针来帮助决定它们之间的区别。
根据我的有限经验,部署SSH密钥可能是设置最简单的方法。

14

生成 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

1
set-url origin ssh是我这边缺少的部分。谢谢。 - Nir Levy

2
我认为可以通过使用凭证缓存和使用.netrc文件来实现。请参考此链接

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接