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

way*_*ure 93 github github-pages

我正在尝试使用个人访问令牌与GitHub进行身份验证.在github的帮助文件中,它声明使用curl方法进行身份验证(https://help.github.com/articles/creating-an-access-token-for-command-line-use).我试过这个,但我仍然无法推送给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
Run Code Online (Sandbox Code Playgroud)

此代码导致错误:

remote:匿名访问scuzzlebuzzle/ol3-1.git被拒绝.

致命:" https://github.com/scuzzlebuzzle/ol3-1.git/ "的身份验证失败

谢谢

Ian*_*sco 150

你的curl命令是完全错误的.您应该使用以下内容

curl -H 'Authorization: token <MYTOKEN>' ...
Run Code Online (Sandbox Code Playgroud)

除此之外,如果实际上它是私有的,那么它不会授权您的计算机克隆存储库.(但是,看看它表明它不是.)你通常会做的是以下几点:

git clone https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git --branch=gh-pages gh-pages
Run Code Online (Sandbox Code Playgroud)

这会将您的凭据添加到克隆存储库时创建的远程数据库.但遗憾的是,您无法控制Travis如何克隆您的存储库,因此您必须像这样编辑遥控器.

# After cloning
cd gh-pages
git remote rm origin
git remote add origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git
Run Code Online (Sandbox Code Playgroud)

这将修复您的项目使用内置凭据的远程.

  • 您正在寻找的命令是 `git remote set-url origin https://&lt;USERNAME&gt;:&lt;MYTOKEN&gt;@github.com/&lt;USERNAME&gt;/&lt;REPO&gt;.git` (5认同)
  • 您不必管理远程服务器,而可以使用set-url,例如`git remote set-url origin https:// scuzzlebuzzle:&lt;MYTOKEN&gt; @ github.com / scuzzlebuzzle / ol3-1.git` (3认同)
  • 不安全的方法。关键很容易被发现登录错误。请改用范围严格的部署密钥。 (2认同)

Bru*_*nno 39

您可以轻松更改远程身份验证,首先:

删除您当前的来源:

git remote remove origin
Run Code Online (Sandbox Code Playgroud)

进而:

git remote add origin https://<TOKEN>@github.com/<USERNAME>/<REPO>.git
Run Code Online (Sandbox Code Playgroud)

您可以在此处了解如何生成身份验证令牌。

  • 这是一个超级答案,上面的答案不起作用 (3认同)
  • 确认这个有效! (2认同)

Ech*_*lon 32

@YMHuang通过文档链接让我走上正轨.

首先,您需要创建个人访问令牌.这里描述如下:https://help.github.com/articles/creating-an-access-token-for-command-line-use/

Laughably,文章告诉你如何创建它,但绝对不知道如何处理它.经过大约一个小时的拖网文件和SO,我终于找到了答案: -

$ git clone https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>
Run Code Online (Sandbox Code Playgroud)

当我远程工作并且仍然进行本地更改时,我实际上被迫通过公司政策启用2FA,所以事实上它不是clone我需要的push.我在许多地方读到了我需要删除并重新创建遥控器,但实际上我的正常push命令与clone上面的命令完全相同,并且遥控器没有改变: -

$ git push https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>
Run Code Online (Sandbox Code Playgroud)

  • 那么我们应该从哪里获取令牌以便在需要的地方输入它呢?我们是否真的希望将其复制到任何地方的文件中,然后在需要使用 Git 时将其粘贴到身份验证提示中。如果是这样,那就是我听过的最糟糕的工作流程,但 Git 文档似乎没有任何其他建议。 (26认同)
  • 他们为什么不解释创建令牌后如何处理它?! (16认同)
  • 今天世界末日就在我们身上:( (15认同)
  • 没有人从头顶上知道他们的 PAT。因此,他们“强迫”我们将 PAT 放入任何人都可以访问的远程 url 的 git 配置中。我不明白 GitHub 的这个决定。 (8认同)
  • _“从 2021 年 8 月 13 日开始,我们在 GitHub.com 上验证 Git 操作时将不再接受帐户密码。”_ 这应该很有趣。 (4认同)
  • 这里所有正确抱怨 GitHub 未能指示如何使用令牌的人都访问了 https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data- secure/creating-a-personal-access-token#using-a-token-on-the-command-line 并在页面底部给出反馈,对吧? (4认同)
  • 我多次尝试这种方法,但我遇到了同样的问题。我生成了 PTA,然后在执行推送命令后尝试进行身份验证,输入我的用户名和令牌。它仍然告诉我凭证是错误的。我在这些步骤中缺少什么? (2认同)
  • 同意 - 他们解释了如何生成令牌,但没有提供如何使用 &lt;TOKEN&gt; 的帮助。自从 M$ 收购了 Github 以来,它就一落千丈了。 (2认同)

Cha*_*aux 27

对于 macOS,如果系统未提示您输入用户名和密码请求,则表示您的密码存储在 Keychain Access 中。每次您尝试克隆或推送时,它都会尝试使用您的旧密码。

按照以下三个步骤来解决这个问题:

  1. 生成PAT(个人访问令牌)- LINK
  2. 打开钥匙串访问(通过聚光灯搜索)?搜索 GitHub ?点击 GitHub ? 使用新的 PAT链接更改并保存
  3. 再次尝试推送或克隆。现在您已经存储了 PAT 而不是您的密码。


Bos*_*osh 26

为了避免将"钥匙交给城堡"......

需要注意的是sigmavirus24的反应,需要你给特拉维斯令牌具有相当广泛的权限 - 因为GitHub上只提供令牌具有广泛的范围,如"写我的所有公开回购"或"写我的所有私人回购协议".

如果你想收紧访问权限(更多工作!),你可以使用GitHub部署密钥和Travis加密的yaml字段.

这是该技术如何运作的草图 ......

首先生成一个RSA部署密钥(via ssh-keygen)my_key,并将其作为部署密钥添加到github repo设置中.

然后...

$ password=`openssl rand -hex 32`
$ cat my_key | openssl aes-256-cbc -k "$password" -a  > my_key.enc
$ travis encrypt --add password=$password -r my-github-user/my-repo
Run Code Online (Sandbox Code Playgroud)

然后$password通过添加到yaml文件,使用该文件在集成时解密部署密钥:

before_script: 
  - openssl aes-256-cbc -k "$password" -d -a -in my_key.enc -out my_deploy_key
  - echo -e "Host github.com\n  IdentityFile /path/to/my_deploy_key" > ~/.ssh/config
  - echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" > ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

注意:最后一行预先填充github的RSA密钥,这样就无需在连接时手动接受.


Joh*_*ang 26

使用OAuth令牌实现自动化/ Git自动化使用OAuth令牌实现Git自动化

$ git clone https://github.com/username/repo.git
  Username: your_token
  Password:
Run Code Online (Sandbox Code Playgroud)

它也适用于git push命令

参考 https://help.github.com/articles/git-automation-with-oauth-tokens/

  • 关键是要设置git,这样就不需要一直提示您的令牌,如下所述 - https://help.github.com/articles/caching-your-github-password-in-git/此问题的其他答案将最终以明文形式将您的令牌写入.git/config,这可能被视为安全风险. (4认同)

Ton*_*Ngo 25

通常我是这样的:

 git push https://$(git_token)@github.com/user_name/repo_name.git
Run Code Online (Sandbox Code Playgroud)

git_token从变量读取配置Azure中的DevOps

你可以在这里阅读我的完整博客文章。


Scr*_*die 23

我使用创建个人访问令牌中的说明生成了一个令牌

要实际使用它,以下顺序对我有用:

git remote remove origin
git remote add origin https://[TOKEN]@github.com/[USER]/[REPO]
git push
Run Code Online (Sandbox Code Playgroud)

  • 如果您为组织尝试此操作(并且您像我一样愚蠢),请注意 [USER] 表示您组织的用户名,而不是您的个人用户名。 (7认同)
  • 实际上,您不需要“删除”原点然后添加。它将被覆盖,因此只需“add”就足够了 (6认同)
  • 这个对我有用。欣赏它。 (3认同)
  • 非常适合更新现有本地存储库上的过期令牌。谢谢。 (2认同)

Mhm*_*z_A 15

我必须添加oauthoroauth2作为用户名才能成功进行身份验证:

https://oauth:<TOKEN>@github.com/user/repo.git
Run Code Online (Sandbox Code Playgroud)

  • 看来用户名根本不重要。我尝试了“foobar”,它仍然有效。但不加前缀“&lt;ANYTHING&gt;:”会导致以下错误:``致命:无法读取'https://***@github.com'的密码:没有这样的设备或地址``` (3认同)

Dav*_*ima 14

在 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不带方括号


Oma*_*gdy 12

第 1 步:获取访问令牌

转到此链接:https : //github.com/settings/tokens。并在那里生成令牌。

第 2 步:使用令牌

git push

Username: <your username>
Password: <the access token>
Run Code Online (Sandbox Code Playgroud)

现在您不必每次推送更改时都输入用户名和密码。

您只需键入git push并按Enter。并且将推送更改。

  • 对于任何想要像 Omar 那样工作的人来说,除非我首先执行“$ git config credential.helper store”,否则我无法让它工作。注意:凭据将以未加密的方式保存在您的主目录中的文件中,因此请谨慎使用。[可以在这里找到更好的解释](http://gmacario.github.io/2017/08/08/cmdline-git-with-github-2fa.html) (5认同)
  • @Steinarr 链接无效。 (3认同)
  • 比这更简单的事情是不可能的。谢谢! (3认同)
  • 这对我来说是有效的。 (2认同)

rad*_*vus 12

我在Ubuntu 20.04 (Focal Fossa) 上,我不断收到消息,很快我将无法从控制台登录。我非常困惑。

最后,我找到了下面的网址,这将起作用。但是您需要知道如何创建PAT(个人访问令牌),您必须将其保存在计算机上的文件中。

最终 URL 如下所示:

git push https://1234567890123456789012345678901234567890@github.com/user-name/repo.git
Run Code Online (Sandbox Code Playgroud)

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

用户名将是您的确切用户名

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

你也可以这样使用它:

当你做一个

git push

1. 系统会提示您输入用户名和密码

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

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

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

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

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

PAT 设置

保存您的 PAT 或丢失它

拥有 PAT 后,您将需要将其保存在本地文件中,以便再次使用。如果您不将其保存在某处,则无法再次看到它,您将被迫创建一个新的 PAT。

现在你至少需要:

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

对于 1,只需使用

cat ~/files/myPatFile.txt
Run Code Online (Sandbox Code Playgroud)

其中路径是您存储 PAT 值的位置和文件的真实路径。

对于 2

xclip -selection clipboard < ~/files/myPatFile.txt
Run Code Online (Sandbox Code Playgroud)

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

仅供参考 - 如果您没有 xclip,请执行以下操作:

sudo apt-get install xclip
Run Code Online (Sandbox Code Playgroud)

它下载并安装 xclip。如果您没有apt-get,则可能需要使用其他安装程序(如YUM)。


Ish*_*ani 12

由于我使用的是 macOS,所以我可以专门针对 macOS 来回答这个问题。我们也可以将其用于 Windows。有用!!在您的 GitHub 帐户中,单击右上角的头像并转到设置配置文件

点击设置

设置

点击开发者设置

开发者设置

单击个人访问令牌

个人访问令牌

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

然后点击生成新令牌

生成新的令牌

为您的访问令牌命名并检查第一个选项。

向下滚动并单击“生成令牌”

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

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

git push https://<access__token>@github.com/<username>/<repo__name>.git
Run Code Online (Sandbox Code Playgroud)

在我看来,您可以使用第二个选项,同时推送存储库提供访问令牌,然后就可以开始了。


ccr*_*on1 11

这对我使用ssh有用:

__CODE__> __CODE__>__CODE__

git remote rm origin
git remote add origin https://[APPLICATION]:[NEW TOKEN]@github.com/[ORGANISATION]/[REPO].git
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于使用以下格式的个人访问令牌:`git remote add origin https://[USERNAME]:[NEW TOKEN]@github.com/[USERNAME]/[REPO].git` (20认同)
  • @TheRealChx101您可以使用`git remote set-url origin https://[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git&gt; /dev/null 2&gt;&amp;1`之类的东西来避免记录不安全的内容git 输出。将令牌存储在变量中以避免将其记录在日志中。但它需要存储在某个地方。为了进一步确保安全,您可以将其加密存储。例如,Travis CI 支持这种方法。 (3认同)
  • 我必须执行 `git Remote add origin https://[USERNAME]:[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git` (2认同)
  • 也为我工作 git remote add origin https://[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git (2认同)
  • @ThomasChafiol和TheRealChx101当您的令牌过期或者例如,Windows密码更新您的公司范围的企业身份验证时,这将是正确的方法,或者更确切地说是您的两个答案的组合`git remote set-url origin https://[TOKEN]@ git.mycompany.com/[组织]/[REPO].git` (2认同)

小智 10

  1. git remote remove origin
    
    Run Code Online (Sandbox Code Playgroud)
  2. git remote add origin https://{accesstoken}:{accesstoken}@gitlab.com/{username}/{repo}.git
    
    Run Code Online (Sandbox Code Playgroud)
  3. git push https://{youraccesstoken}@github.com/{username}/{repo}.git
    
    Run Code Online (Sandbox Code Playgroud)

这对我有用。


und*_*ned 9

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

由于今天取消了对密码的支持,我无法使用git config建议的命令使用令牌更新我的凭据。

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

nano ~/.git-credentials
Run Code Online (Sandbox Code Playgroud)

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

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

git config --global credential.helper store
Run Code Online (Sandbox Code Playgroud)

请注意,通过使用 Git 的凭证助手,任何有权访问您的主目录的人都可以看到您的令牌。

  • 我确实需要它 (2认同)
  • 谢谢!!这就是我真正需要的:) (2认同)

Gig*_*lle 7

如果您使用 GitHub Enterprise 并克隆存储库或推送给您一个 403 错误而不是提示输入用户名/令牌,您可以使用:

  1. 删除存储库

  2. 打开命令提示符并导航到您希望存储库所在的文件夹

  3. 类型:

    git clone https://[USERNAME]:[TOKEN]@[GIT_ENTERPRISE_DOMAIN]/[ORGANIZATION]/[REPO].git
    
    Run Code Online (Sandbox Code Playgroud)


Pin*_*Woo 7

以下步骤对我有用:

  1. git remote remove origin

  2. git remote add origin https://[TOKEN]@[REPO LINK]

例如,我的仓库名称是:https : //github.com/username/codf.git

命令将是:

git remote add origin https://[TOKEN]@github.com/username/codf.git

  1. git push origin branchName


小智 7

我遇到了这个问题,但找到了解决方案:

git push https://github.com/<username>/<project_name>
and
username: paste your personnal access token
password: paste your personnal access token
Run Code Online (Sandbox Code Playgroud)

  • 您确定您的用户名_和_密码都使用您的个人访问令牌,而不仅仅是您的密码吗? (4认同)
  • 无论如何,这与五年前的[@Echelon 的答案](/sf/answers/2767167651/) 非常相似,但细节却少得多。 (4认同)
  • 这不起作用 (2认同)

小智 6

对于 Windows:

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