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

我正尝试使用个人访问令牌对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

此代码导致错误:

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

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

谢谢


你的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 rm origin
git remote add origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git

这将修复您的项目使用内置凭据的远程服务器。


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

请注意,sigmavirus24的回应要求您给Travis一个拥有相当宽的权限的令牌 - 因为GitHub只提供具有广泛范围的令牌,如“写下所有公开回购”或“写下所有私人回购”。

如果您想要加强访问权限(稍加工作!),您可以将GitHub部署密钥与Travis加密的yaml字段结合使用。

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

首先生成一个名为my_key的RSA部署密钥(通过ssh-keygen ),并将其作为部署密钥添加到您的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.comn  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密钥,这可以避免在连接时需要手动接受。


使用OAuth令牌进行自动化/ Git自动化使用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/

链接地址: http://www.djcxy.com/p/92213.html

上一篇: Authenticate with GitHub using token

下一篇: github: No supported authentication methods available