Подтвердить что ты не робот

Аутентифицироваться с помощью 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/ "

4b9b3361

Ответ 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 rm origin
git remote add origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git

Это позволит исправить ваш проект, чтобы использовать удаленный доступ с встроенными учетными данными.

Ответ 2

Чтобы не передавать "ключи к замку"...

Обратите внимание, что ответ sigmavirus24 требует, чтобы вы предоставили Travis маркер с довольно широкими разрешениями - поскольку GitHub предлагает только токены с широкими областями, такими как "написать все мои публичные репозитории" или "написать все мои личные репозитории".

Если вы хотите затянуть доступ (с немного большей работой!), вы можете использовать ключи развертывания GitHub в сочетании с зашифрованными полями Ямля Travis.

Здесь эскиз того, как работает техника...

Сначала создайте ключ развертывания 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, что позволяет избежать необходимости принимать вручную во время соединения.

Ответ 3

Автоматизация /Git автоматизация с помощью токенов OAuth

$ git clone https://github.com/username/repo.git
  Username: your_token
  Password:

Это также работает в команде git push.

Ссылка: https://help.github.com/articles/git-automation-with-oauth-tokens/

Ответ 4

Во-первых, вам нужно создать токен личного доступа (PAT). Это описано здесь: https://help.github.com/articles/creating-an-access-token-for-command-line-use/

Смехотворно, статья рассказывает о том, как ее создать, но не дает абсолютно никаких сведений о том, что с ней делать. Примерно через час траления документации и, я наконец нашел ответ:

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

На самом деле я был вынужден включить двухфакторную аутентификацию в соответствии с политикой компании, когда работал удаленно и все еще имел локальные изменения, так что на самом деле это был не тот clone мне нужен, а push. Я читал во многих местах, что мне нужно было удалить и воссоздать пульт, но на самом деле моя обычная команда push работала точно так же, как clone выше, и пульт не изменился:

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

(@YMHuang поставил меня на правильный путь со ссылкой на документацию.)

Ответ 5

Это сработало для меня с помощью SSH:

Настройки → Настройки разработчика → Создать новый токен.

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

Ответ 6

Потратив так много часов на применение токена GitHub, он наконец работает так:

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

  • Код следует руководству Codefresh по клонированию репо с использованием токена (фристайл)
  • '-123456-whatever' испытание: sed %d%H%M в слове соответствия '-123456-whatever'
  • подтолкнуть к репо (который является частным репо)
  • вызвано веб- крюками DockerHub

Ниже приведен полный код:

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