Authenticate with GitHub using a token

后端 未结 10 520
广开言路
广开言路 2020-11-30 17:09

I am trying to authenticate with GitHub using a personal access token. In the help files at github, it states to use the cURL method to authenticate (https://help.github.com

相关标签:
10条回答
  • 2020-11-30 17:10

    If you're using GitHub Enterprise and cloning the repo or pushing gives you a 403 error instead of prompting for a username/token, you can use this:

    1. Delete the repo
    2. Open command prompt and navigate to the folder you want the repo in
    3. Type:
    git clone https://[USERNAME]:[TOKEN]@[GIT_ENTERPRISE_DOMAIN]/[ORGANIZATION]/[REPO].git
    
    0 讨论(0)
  • 2020-11-30 17:11

    To avoid handing over "the keys to the castle"...

    Note that sigmavirus24's response requires you to give Travis a token with fairly wide permissions -- since GitHub only offers tokens with wide scopes like "write all my public repos" or "write all my private repos".

    If you want to tighten down access (with a bit more work!) you can use GitHub deployment keys combined with Travis encrypted yaml fields.

    Here's a sketch of how the technique works...

    First generate an RSA deploy key (via ssh-keygen) called my_key and add it as a deploy key in your github repo settings.

    Then...

    $ 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
    

    Then use the $password file to decrypt your deploy key at integration-time, by adding to your yaml file:

    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
    

    Note: the last line pre-populates github's RSA key, which avoids the need for manually accepting at the time of a connection.

    0 讨论(0)
  • 2020-11-30 17:22

    Normally I do like this

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

    The git_token is reading from variable config in azure devops.

    You can read my full blog here

    0 讨论(0)
  • 2020-11-30 17:22

    The password that you use to login to github.com portal does not work in VS Code CLI/Shell. You should copy PAT Token from URL https://github.com/settings/tokens by generating new token and paste that string in CLI as password.

    0 讨论(0)
  • 2020-11-30 17:25

    First, you need to create a personal access token (PAT). This is described here: https://help.github.com/articles/creating-an-access-token-for-command-line-use/

    Laughably, the article tells you how to create it, but gives absolutely no clue what to do with it. After about an hour of trawling documentation and Stack Overflow, I finally found the answer:

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

    I was actually forced to enable two-factor authentication by company policy while I was working remotely and still had local changes, so in fact it was not clone I needed, but push. I read in lots of places that I needed to delete and recreate the remote, but in fact my normal push command worked exactly the same as the clone above, and the remote did not change:

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

    (@YMHuang put me on the right track with the documentation link.)

    0 讨论(0)
  • 2020-11-30 17:27

    Your curl command is entirely wrong. You should be using the following

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

    That aside, that doesn't authorize your computer to clone the repository if in fact it is private. (Taking a look, however, indicates that it is not.) What you would normally do is the following:

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

    That will add your credentials to the remote created when cloning the repository. Unfortunately, however, you have no control over how Travis clones your repository, so you have to edit the remote like so.

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

    That will fix your project to use a remote with credentials built in.

    Warning: Tokens have read/write access and should be treated like passwords. If you enter your token into the clone URL when cloning or adding a remote, Git writes it to your .git/config file in plain text, which is a security risk.

    0 讨论(0)
提交回复
热议问题