1. ホーム
  2. ギズーブ

[解決済み】トークンを使ってGitHubで認証する。

2022-03-25 04:07:39

質問

個人アクセストークンを使って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 への匿名アクセスが拒否されました。

<ブロッククオート

fatal: '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 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.