399

我正在尝试使用个人访问令牌向 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/”的身份验证失败”

4

31 回答 31

419

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

curl -H 'Authorization: token <MYTOKEN>' ...

除此之外,如果实际上它是私有的,则不会授权您的计算机克隆存储库。(但是,看一看表明它不是。)您通常会做的事情如下:

git clone https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git --branch=gh-pages gh-pages

这会将您的凭据添加到克隆存储库时创建的远程。然而不幸的是,您无法控制 Travis 如何克隆您的存储库,因此您必须像这样编辑远程。

# After cloning
cd gh-pages
git remote set-url origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git

这将修复您的项目以使用内置凭据的遥控器。

警告:令牌具有读/写访问权限,应被视为密码。如果在克隆或添加远程时将令牌输入到克隆 URL,Git writes it to your .git/config file in plain text, which is a security risk.

于 2013-09-21T19:38:31.183 回答
244

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

可笑的是,这篇文章告诉你如何创建它,但完全不知道如何处理它。经过大约一个小时的拖网文档和堆栈溢出,我终于找到了答案:

$ git clone https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>

实际上,当我在远程工作并且仍然有本地更改时,我实际上被迫通过公司政策启用双重身份验证,所以实际上这不是clone我需要的,而是push. 我在很多地方读到了我需要删除和重新创建遥控器,但实际上我的正常push命令与上面的完全一样clone,并且遥控器没有改变:

$ git push https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>

(@YMHuang 通过文档链接让我走上了正轨。)

于 2016-09-16T12:00:04.353 回答
98

这对我有用 ssh

设置开发者设置生成新令牌

git remote set-url origin https://[APPLICATION]:[NEW TOKEN]@github.com/[ORGANISATION]/[REPO].git
于 2018-02-27T11:17:30.737 回答
73

使用 OAuth 令牌的自动化 / Git 自动化

$ git clone https://github.com/username/repo.git
  Username: your_token
  Password:

它也适用于git push命令。

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

于 2015-04-13T12:20:56.720 回答
57

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

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

git remote remove origin
git remote add origin https://[TOKEN]@github.com/[USER]/[REPO]
git push
于 2021-08-14T12:03:55.140 回答
41

为了避免交出“城堡的钥匙”……

请注意,sigmavirus24 的响应要求您向 Travis 提供具有相当广泛权限的令牌——因为 GitHub 仅提供具有广泛范围的令牌,例如“写我所有的公共仓库”或“写我所有的私人仓库”。

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

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

首先生成一个调用的 RSA 部署密钥(通过ssh-keygenmy_key,并将其作为部署密钥添加到您的 github 存储库设置中。

然后...

$ 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

然后使用该$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

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

于 2014-04-10T01:48:20.230 回答
41

第 1 步:获取访问令牌

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

或者从您的 Github 帐户,转到:
设置 -> 开发人员设置 -> 个人访问令牌

第 2 步:使用令牌

git push

Username: <your username>
Password: <the access token>
于 2021-01-19T05:51:10.877 回答
34

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

请按照以下三个步骤解决此问题:

  1. 生成PAT(个人访问令牌)- LINK
  2. 打开 KeyChain Access(通过聚光灯搜索)→ 搜索 GitHub → 单击 GitHub → 更改并使用新的 PAT链接保存
  3. 尝试再次推送或克隆。现在您已经存储了 PAT 而不是密码。
于 2021-06-30T10:07:09.887 回答
29

通常我喜欢这样:

 git push https://$(git_token)@github.com/user_name/repo_name.git

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

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

于 2020-03-05T04:43:49.330 回答
21

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

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

最终 URL 如下所示:

git push https://1234567890123456789012345678901234567890@github.com/user-name/repo.git

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

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

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

您也可以通过这种方式使用它:

当你做一个

git push

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

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

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

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

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

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

PAT 设置

保存您的 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)。

于 2021-01-21T16:34:30.323 回答
17

我以前使用密码通过 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 的凭证助手,任何有权访问您的主目录的人都可以看到您的令牌。

于 2021-08-13T17:33:12.283 回答
11

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

删除您当前的来源:

git remote remove origin

接着:

git remote add origin https://<TOKEN>@github.com/<USERNAME>/<REPO>.git

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

于 2021-09-15T15:49:34.677 回答
9

由于我使用的是 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

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

于 2021-09-17T10:13:14.747 回答
8

以下步骤对我有用:

  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
于 2021-08-21T05:23:07.673 回答
7

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

  1. 删除存储库

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

  3. 类型:

    git clone https://[USERNAME]:[TOKEN]@[GIT_ENTERPRISE_DOMAIN]/[ORGANIZATION]/[REPO].git
    
于 2020-03-13T20:08:21.963 回答
6

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

于 2021-11-16T19:19:40.993 回答
5

最近 github 不允许使用我们的用户名和密码直接从 cmd 提交。为此,我们需要生成访问令牌,如此所述。

然后在命令提示符中使用与用户名和密码相同的访问令牌进行 git 命令git pushgit pull。例如

git push origin master
Username for 'https://github.com': lhq_4npmklMYXXXXXXXXXXXXXXXXXXXL8SxHxU
Password for 'https://lhq_4npmklMYXXXXXXXXXXXXXXXXXXXL8SxHxU@github.com':<give same access token here as password too>

你开始看到代码日志如下:

Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 8 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (18/18), 6.33 KiB | 539.00 KiB/s, done.
Total 18 (delta 5), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (5/5), completed with 2 local objects.
To https://github.com/xxxxxxxxxxx/xxx-xxxxx-repo.git
123456..1233456  master -> master

希望这可以帮助某人。快乐编码!:)

于 2021-09-20T17:52:41.000 回答
3
  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
    

这对我有用。

于 2021-10-05T20:03:10.867 回答
3

对于那些来自GitLab的人,什么对我有用:

先决条件:

创建令牌:

    1. 选择必要的权限
    1. 选择到期日
    1. 按生成create personal access token
  • 保存令牌!

步骤1。

添加遥控器:

git remote add origin https://<access-token-name>:<access-token>@gitlab.com/path/to/project.git

第2步。

拉一次:

https://<access-token-name>:<access-token>@gitlab.com/path/to/project.git

现在您可以从存储库读取/写入/写入

于 2021-02-23T16:38:24.837 回答
3

我必须添加oauthoauth2作为用户名才能成功验证:

https://oauth:<TOKEN>@github.com/user/repo.git
于 2022-01-22T11:32:22.120 回答
3

它可以使用github 部署密钥来完成,该密钥缩小了对单个 github 存储库的访问范围,并且可以选择写入权限。

Github 部署密钥使用用户生成的 ssh 密钥,使用ssh-keygen该密钥创建一个私钥文件和一个公钥文件。

假设给定的密钥名称ssh-keygenkey-test,私有文件和公共文件分别位于~/.ssh/key-test~/.ssh/key-test.pub中。

假设 github 项目名称为keytest.

要通过 github 项目网页向项目添加部署密钥,请获取settings/deploy keys并单击add。将公钥文件的内容粘贴~/.ssh/key-test.pub到目标框中并确认。

修改~/.ssh/config文件的内容以包含以下内容:

Host gh-keytest
        Hostname github.com
        IdentityFile=/home/user/.ssh/key-test

注意:gh-keytest是任意别名。

现在您可以使用

git push git@gh-keytest:<githubaccountname>/keytest.git

仅使用 push 来完成

git remote remove origin  # in case origin is already set
git remote add origin git@gh-keytest:<githubaccountname>/testscope.git
git push --set-upstream origin main

注意:替换main为正确的预期分支名称。

此后

git push 

足够了。

于 2021-11-24T19:50:24.773 回答
3

对于 Mac 用户:

  1. 打开Keychain Access并找到 GitHub

  2. 在 GitHub 中右键单击

  3. 点击删除

  4. 打开终端并尝试克隆一个私有项目

  5. 添加所需的值
    用户名:$your GitHub 用户名
    密码:$paste token here
    并点击Enter。Voilà - 已添加令牌。

于 2021-07-28T10:20:27.840 回答
3

对于 Windows:

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

在这个问题上苦苦挣扎了将近一整天,将 ORG/REPO 部分中的硬编码到我们的构建脚本中,得到了可怕的“找不到远程”错误,最终我找到了一个可行的解决方案,使用TRAVIS_REPO_SLUG.

将其切换为硬编码属性会立即生效。

git remote set-url origin https://[ORG]:${TOKEN}@github.com/${TRAVIS_REPO_SLUG}
于 2020-04-28T15:18:12.717 回答
1

从Android Studio中选择 vcs → push 选项卡。将显示一个带有用户名和密码的弹出窗口。输入您的用户名,而不是密码,输入令牌号。它将被推送到存储库。

于 2021-08-29T16:48:52.797 回答
1

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

git push https://github.com/<username>/<project_name>
and
username: paste your personnal access token
password: paste your personnal access token
于 2021-10-31T20:14:49.030 回答
1

通过在应用GitHub 令牌上挣扎了这么多小时,它的工作原理如下:

$ cf_export GITHUB_TOKEN=$(codefresh get context github --decrypt -o yaml | yq -y .spec.data.auth.password)

  • 代码遵循Codefresh关于使用令牌克隆 repo 的指南(freestyle}
  • 进行的测试:匹配词上的sed %d%H%M'-123456-whatever'
  • 推回回购(这是私人回购
  • DockerHub webhooks触发

以下是完整代码:

version: '1.0'
steps:
  get_git_token:
    title: Reading Github token
    image: codefresh/cli
    commands:
      - cf_export GITHUB_TOKEN=$(codefresh get context github --decrypt -o yaml | yq -y .spec.data.auth.password)
  main_clone:
    title: Updating the repo
    image: alpine/git:latest
    commands:
      - git clone https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git
      - cd compose && git remote rm origin
      - git config --global user.name "chetabahana"
      - git config --global user.email "chetabahana@gmail.com"
      - git remote add origin https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git
      - sed -i "s/-[0-9]\{1,\}-\([a-zA-Z0-9_]*\)'/-`date +%d%H%M`-whatever'/g" cloudbuild.yaml
      - git status && git add . && git commit -m "fresh commit" && git push -u origin master

输出...

On branch master 
Changes not staged for commit: 
  (use "git add ..." to update what will be committed) 
  (use "git checkout -- ..." to discard changes in working directory) 

modified:   cloudbuild.yaml 

no changes added to commit (use "git add" and/or "git commit -a") 
[master dbab20f] fresh commit 
 1 file changed, 1 insertion(+), 1 deletion(-) 
Enumerating objects: 5, done. 
Counting objects:  20% (1/5) ...  Counting objects: 100% (5/5), done. 
Delta compression using up to 4 threads 
Compressing objects:  33% (1/3) ... Writing objects: 100% (3/3), 283 bytes | 283.00 KiB/s, done. 
Total 3 (delta 2), reused 0 (delta 0) 
remote: Resolving deltas:   0% (0/2)  ...   (2/2), completed with 2 local objects. 
To https://github.com/chetabahana/compose.git 
   bbb6d2f..dbab20f  master -> master 
Branch 'master' set up to track remote branch 'master' from 'origin'. 
Reading environment variable exporting file contents. 
Successfully ran freestyle step: Cloning the repo 
于 2019-06-21T14:46:02.710 回答
1

用于登录 github.com 门户的密码在Visual Studio Code CLI/shell中不起作用。您应该从 URL https://github.com/settings/tokens复制 PAT 令牌,方法是生成一个新令牌并将该字符串作为密码粘贴到 CLI 中。

于 2020-02-28T22:47:14.787 回答
1

使用新的访问令牌更新您的远程仓库

git remote set-url origin https://{{your_username}}:{{your_new_token}}@github.com/{{repo_path}}.git
于 2021-08-18T16:10:57.690 回答
0
  1. 克隆你的项目 -> git clone https://token@github.com//project.git
  2. 在项目文件夹中-> git config --global credential.helper 缓存

和工作

于 2021-08-14T09:28:16.563 回答
0

从开发人员设置生成访问令牌后,运行这些命令, git push origin [branch] Username for 'https://github.com': [accessToken] Password for 'https://[accessToken]@github.com':[accessToken]

于 2021-10-10T01:51:58.293 回答