使用令牌在GitHub上进行身份验证

572

我正在尝试使用个人访问令牌来认证GitHub。在GitHub的帮助文件中,它指出要使用cURL方法进行身份验证 (创建个人访问令牌)。我已经尝试过这样做了,但仍无法将其推送到GitHub。请注意,我正在从未经身份验证的服务器 (Travis CI) 推送。

cd $HOME
git config --global user.email "emailaddress@yahoo.com"
git config --global user.name "username"

curl -u "username:<MYTOKEN>" https://github.com/username/ol3-1.git
git clone --branch=gh-pages https://github.com/username/ol3-1.git gh-pages

cd gh-pages
mkdir buildtest
cd buildtest
touch asdf.asdf

git add -f .
git commit -m "Travis build $TRAVIS_BUILD_NUMBER pushed to gh-pages"
git push -fq origin gh-pages

这段代码导致了错误:

远程: 拒绝对scuzzlebuzzle/ol3-1.git的匿名访问。

致命错误: 认证失败,无法访问'https://github.com/scuzzlebuzzle/ol3-1.git/'


3
截至2021年8月28日,GitHub CLI可以用于身份验证(无需生成PAT,如果可以打开浏览器,可以直接使用密码登录)。请参阅:https://github.com/cli/cli#installation,https://cli.github.com/manual/gh_auth_login - Nagabhushan S N
31个回答

27
我在Ubuntu 20.04 (Focal Fossa)上,一直收到无法从控制台登录的消息,让我非常困惑。
最终,我找到了下面的URL,它可以正常工作。但是,您需要知道如何创建PAT(个人访问令牌),并将其保存在计算机上的文件中。
以下是最终URL的样子:
git push https://1234567890123456789012345678901234567890@github.com/user-name/repo.git

PAT(个人访问令牌)值 -- 在URL中//和@符号之间的整个长值是您的PAT。

user-name将是您的确切用户名

repo.git将是您的确切存储库名称

您也可以这样使用它:

当您执行

git push

1. 您将被提示输入用户名和密码

2. 只需像平常一样提交您的用户名

3. 现在将您的PAT提交为密码,它将起作用。

您需要按照以下步骤生成一个PAT:创建个人访问令牌

这将给您提供您将放置在URL中的PAT值。

创建PAT时,请确保选择以下选项,以便允许您管理您的存储库。

PAT settings

保存你的PAT或者失去它

一旦你拥有了你的PAT,你需要将它保存在本地文件中,这样你才能再次使用它。如果你不把它保存在某个地方,就再也没有办法看到它了,你将被迫创建一个新的PAT。

现在,你至少需要:

  1. 一种在控制台中显示它以便再次查看的方法。
  2. 或者,一种自动将它复制到你的剪贴板的方法。

对于第1点,只需使用:

cat ~/files/myPatFile.txt

路径是指您存储PAT值的位置和文件的实际路径。

对于第2步:

xclip -selection clipboard < ~/files/myPatFile.txt

这将把文件内容复制到剪贴板,以便更轻松地使用您的PAT。

顺便说一下 - 如果您没有xclip,请执行以下操作:

sudo apt-get install xclip

它下载并安装了xclip。如果你没有apt-get,你可能需要使用另一个安装程序(如YUM)。

git config credential.helper cache 可以用来保存密码,缓存时间默认为15分钟。此外,git config credential.helper store 可以用于永久存储该仓库的密码(不太安全)。更多信息请参见这里 - agent18

24

我以前使用密码通过Git CLI访问我的私人存储库,并使用 git config --global credential.helper store保存了我的凭据。

由于今天密码的支持已经被删除,我无法使用建议的git config命令更新我的凭据令牌。

如果其他在Linux上有此问题的人,可以手动更新~/.git-credentials文件,例如:

nano ~/.git-credentials

在冒号:和符号@之间输入您的令牌。 (要保存并关闭文件,请按Ctrl + OEnterCtrl + X)。

在更新凭据文件中的令牌后,您可能还需要运行以下命令(请参见@ guhur的评论):

git config --global credential.helper store
请注意,通过使用Git的凭据助手,可以访问您的主目录的任何人都可以看到您的令牌。

1
谢谢,经过3个小时的尝试,这真的是我唯一有效的解决方法。只是我删除了~/.git-credentials文件,然后使用git config credential.helper store。 - WickedElephant
1
我确实需要它。 - guhur
1
谢谢!这正是我所需要的 :) - fmrico
什么是“the token sugin”?请通过编辑(更改)您的答案来回答,而不是在评论中回答(不要包含“Edit:”,“Update:”或类似内容 - 答案应该看起来像今天写的)。 - Peter Mortensen
我能够通过PAT验证VSC,但是在按照之前的步骤进行CLI时,仍然出现“fatal: credential url cannot be parsed: token”的错误。 - Carmine Tambascia
显示剩余7条评论

15

我必须将oauthoauth2作为用户名才能成功进行身份验证:

https://oauth:<TOKEN>@github.com/user/repo.git

3
似乎用户名并不重要。我尝试了“foobar”,它仍然有效。但是,如果没有以“<任何内容>:”为前缀,则会导致以下错误:fatal: could not read Password for 'https://***@github.com': No such device or address - siwyd
@siwyd 嗯...有趣,所以它也应该像这样工作 https://:<TOKEN>@github.com/user/repo.git - Mechanic

13

这是我在VS Code环境和私有Github上遇到的唯一有效答案。

  • 首先 => 在此处生成令牌:https://github.com/settings/tokens
  • 其次 => 在您的VS Code终端中“cd”到正确的位置。
  • 第三 => 按照这个示例进行操作:

git clone https://[MY_USER_NAME]:[GITHUB_PERSONAL_ACCESS_TOKEN]@github.com/davidsonlima/davidson-myrepo.git,不带方括号


12

由于我正在使用macOS,所以可以为macOS特别解答此问题。 我们也可以在Windows上使用。它有效!! 在您的GitHub帐户中,点击右上角的头像并转到个人资料设置。

点击设置

设置

点击开发者设置

开发者设置

点击个人访问令牌

个人访问令牌

个人访问令牌(详细信息)

然后点击生成新令牌

生成新令牌

给您的访问令牌命名并选中第一个选项。

向下滚动并单击生成令牌

现在,当您推送repo时,请使用以下语法:

git remote add origin https:<access__token>://@github.com/<username>/<repo__name>.git

git push https://<access__token>@github.com/<username>/<repo__name>.git

在我看来,你可以使用第二个选项,在推送 repo 时提供访问令牌即可。


上一个例子很有帮助。这对我有效。 - horoyoi o

12
以下步骤适用于我:
1. 执行命令:git remote remove origin 2. 执行命令:git remote add origin https://[TOKEN]@[REPO LINK] 例如,我的repo名称是:https://github.com/username/codf.git。 则执行以下命令:git remote add origin https://[TOKEN]@github.com/username/codf.git 3. 执行命令:git push origin branchName

9
  1. git remote remove origin
    
  2. git remote add origin https://{accesstoken}:{accesstoken}@gitlab.com/{username}/{repo}.git
    
  3. git push https://{youraccesstoken}@github.com/{username}/{repo}.git
    

这对我来说有效。


8
如果您正在使用 GitHub Enterprise,下载或推送存储库时遇到 403 错误而不是提示输入用户名/令牌,请尝试以下方法:
  1. Delete the repository

  2. Open a command prompt and navigate to the folder you want the repository in

  3. Type:

    git clone https://[USERNAME]:[TOKEN]@[GIT_ENTERPRISE_DOMAIN]/[ORGANIZATION]/[REPO].git
    

1
正常的Git工作流程不会向可读取存储库的其他用户公开密码或SSH私钥。但上述建议会这样做。这使得任何拥有对本地存储库副本的读取访问权限的人,包括共享的工作或学校文件系统中的用户,都可以查看用户明文的个人访问令牌。这也适用于已归档的副本,例如保留了.git目录的源代码压缩包。 - Joshua Kolden
唯一帮助我在VS Code环境和私人GitHub上的答案。首先在此处生成令牌:https://github.com/settings/tokens。第二,在计算机上正确的位置执行“cd”。第三,按照以下示例操作: git clone https://davidsonlima:qwertyuiopasdfghjklzxcvbnm@github.com/davidsonlima/davidson-myrepo.git - Davidson Lima

7

我曾经也遇到过这个问题,但找到了解决方法:

git push https://github.com/<username>/<project_name>
and
username: paste your personnal access token
password: paste your personnal access token

4
你确定你使用的是个人访问令牌来作为用户名和密码,而不仅仅只是作为密码? - Jeremy Caney
4
无论如何,这似乎与五年前@Echelon的回答非常相似,但细节远不如之前的回答。 - Jeremy Caney
我使用了我的个人访问令牌作为用户名和密码。 - Ibrahima Ba
2
这个不起作用。 - AG_HIHI
它对我起作用了。谢谢,这是最好和最快的解决方案。 - mumbasa
这对我也起作用了,说实话,这可能是一个错误或预期之内的行为,找不到有关此部分的任何文档,官方文档建议(相当明显地)为用户名提供用户名。 - Dhiwakar Ravikumar

6

针对Windows:

  1. 打开凭据管理器 - Windows 凭据
  2. 找到 git:https://github.com 的条目并编辑它
  3. 用 PAT 访问令牌替换原密码
  4. 问题已解决

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