個人アクセストークンを使用してGitHubで認証しようとしています。GitHubのヘルプファイルには、cURLメソッドを使用して認証するように記載されています(個人アクセストークンの作成)。これを試してみましたが、まだGitHubにプッシュできません。認証されていないサーバーからプッシュしようとしていることに注意してください(トラビス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/' の認証に失敗しました"
ベストアンサー1
あなたの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.