399

個人用アクセス トークンを使用して GitHub で認証しようとしています。GitHub のヘルプ ファイルには、cURL メソッドを使用して認証するように記載されています (個人用アクセス トークンの作成)。これを試しましたが、まだ 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

このコードはエラーを引き起こします:

remote: scuzzlebuzzle/ol3-1.git への匿名アクセスが拒否されました。

致命的: 'https://github.com/scuzzlebuzzle/ol3-1.git/' の認証に失敗しました"

4

31 に答える 31

419

あなたの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.

于 2013-09-21T19:38:31.183 に答える
244

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

笑えることに、この記事ではそれを作成する方法は説明されていますが、それをどうするかについてはまったく説明がありません。ドキュメントとスタック オーバーフローを 1 時間ほど探し回った後、ようやく答えを見つけました。

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

私はリモートで作業していて、まだローカルで変更を行っていたときに、会社のポリシーによって 2 要素認証を有効にすることを強制されたので、実際にはclone必要ありませんでしたが、push. リモートを削除して再作成する必要がある多くの場所を読みましたが、実際、通常のpushコマンドは上記とまったく同じように機能cloneし、リモートは変更されませんでした。

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

(@YMHuang は、ドキュメントのリンクで私を正しい軌道に乗せました。)

于 2016-09-16T12:00:04.353 に答える
57

個人用アクセス トークンの作成の手順を使用してトークンを生成しました。

実際に使用するには、次のシーケンスがうまくいきました。

git remote remove origin
git remote add origin https://[TOKEN]@github.com/[USER]/[REPO]
git push
于 2021-08-14T12:03:55.140 に答える
41

「城の鍵」を渡さないように…

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

アクセスを制限したい場合 (もう少し作業が必要です!)、GitHub デプロイ キーを Travis で暗号化された yaml フィールドと組み合わせて使用​​できます。

ここでは、テクニックがどのように機能するかのスケッチを示します...

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

于 2014-04-10T01:48:20.230 に答える
29

通常、私は次のようにします:

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

git_tokenは、Azure DevOpsの変数構成から読み取っています

私のブログ投稿全文は、こちらで読むことができます。

于 2020-03-05T04:43:49.330 に答える
8

次の手順は私にとってはうまくいきます:

  1. git remote remove origin

  2. git remote add origin https://[TOKEN]@[REPO LINK]

たとえば、私のレポ名はhttps://github.com/username/codf.gitです。

コマンドは次のようになります。

git remote add origin https://[TOKEN]@github.com/username/codf.git

  1. git push origin branchName
于 2021-08-21T05:23:07.673 に答える
0

After generating access token from Developer setting, run these commands, git push origin [branch] Username for 'https://github.com': [accessToken] Password for 'https://[accessToken]@github.com':[accessToken]

于 2021-10-10T01:51:58.293 に答える