web-dev-qa-db-ja.com

トークンを使用して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 "[email protected]"
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/ '」の認証に失敗しました

77
wayofthefuture

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

これにより、資格情報が組み込まれたリモートを使用するようにプロジェクトが修正されます。

128

「城の鍵」を引き渡すことを避けるために...

Sigmavirus24の応答では、Travisにかなり広いアクセス許可を持つトークンを与える必要があることに注意してください。GitHubは、「すべてのパブリックリポジトリを書き込む」または「プライベートリポジトリをすべて書き込む」などの幅広いスコープを持つトークンのみを提供するためです。

(もう少し手間をかけて)アクセスを制限したい場合は、GitHubデプロイメントキーをTravis暗号化yamlフィールドと組み合わせて使用​​できます。

これがスケッチテクニックの仕組みです...

最初にssh-keygenというRSAデプロイキーを生成し(my_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キーを事前に入力するため、接続時に手動で受け入れる必要がありません。

26
Bosh

自動化/ 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/

22
John Huang

まず、パーソナルアクセストークン(PAT)を作成する必要があります。これはここで説明されています: https://help.github.com/articles/creating-an-access-token-for-command-line-use/

恐らく、この記事ではそれを作成する方法を説明していますが、どうすればよいのかまったくわかりません。約1時間のトロールドキュメントとStack Overflowの後、私は最終的に答えを見つけました。

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

私は実際にリモートで作業中に会社のポリシーによって two-factor authentication を有効にしなければならなかったので、実際にはローカルの変更があったため、実際にはcloneではなく、Pushでした。リモートを削除して再作成するために必要な多くの場所を読みましたが、実際には、通常のPushコマンドは上記のcloneとまったく同じように機能し、リモートは変更されませんでした。

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

(@YMHuangはドキュメンテーションリンクで私を正しい道に導いた。)

22
Echelon

これは私のために働いたsshを使用して

設定開発者設定新しいトークンを生成.

git remote rm Origin
git remote add Origin https://[APPLICATION]:[NEW TOKEN]@github.com/[ORGANISATION]/[REPO].git
8
ccreedon1

GitHubトークンの適用に非常に多くの時間を費やすことで、最終的に次のように機能します。

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

  • Codefresh トークンを使用したレポジトリのクローン作成のガイダンス(フリースタイル}
  • 実行されたテスト:sed%d%H%M一致ワード'-123456-whatever'
  • レポジトリにプッシュバックprivate repo
  • DockerHubwebhooksによってトリガーされます

完全なコードは次のとおりです。

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:[email protected]/chetabahana/compose.git
      - cd compose && git remote rm Origin
      - git config --global user.name "chetabahana"
      - git config --global user.email "[email protected]"
      - git remote add Origin https://chetabahana:[email protected]/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 
0
Chetabahana