[github] 토큰을 사용하여 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 "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/ ‘ “에 대한 인증 실패



답변

당신의 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.


답변

먼저 개인 액세스 토큰 (PAT)을 생성해야합니다. 여기에 설명되어 있습니다 : https://help.github.com/articles/creating-an-access-token-for-command-line-use/

웃기게도이 기사는 그것을 만드는 방법을 알려주지 만 어떻게해야할지 전혀 모른다. 약 한 시간의 트롤링 문서와 Stack Overflow 후에 마침내 답을 찾았습니다.

$ 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은 문서 링크를 통해 저를 올바른 길로 안내했습니다.)


답변

“성 열쇠”를 넘겨주지 않으려면 …

sigmavirus24의 응답은 Travis에게 상당히 광범위한 권한이있는 토큰을 제공하도록 요구합니다. GitHub는 “내 공개 저장소 모두 작성”또는 “내 개인 저장소 모두 쓰기”와 같은 넓은 범위의 토큰 만 제공하기 때문입니다.

좀 더 많은 작업을 통해 액세스를 강화하려는 경우 Travis 암호화 yaml 필드와 결합 된 GitHub 배포 키를 사용할 수 있습니다.

기술이 어떻게 작동하는지에 대한 스케치 는 다음과 같습니다 .

먼저라는 RSA 배포 키를 생성하고 (를 통해 ssh-keygen) my_keygithub 저장소 설정에서 배포 키로 추가합니다.

그때…

$ 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

그런 다음 $passwordyaml 파일에 추가하여 통합시 파일을 사용 하여 배포 키를 해독합니다.

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 키가 미리 채워져 있으므로 연결시 수동으로 수락 할 필요가 없습니다.


답변

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/


답변

이것은 ssh를 사용하여 나를 위해 일했습니다 .

설정개발자 설정새 토큰 생성 .

git remote set-url origin https://[APPLICATION]:[NEW TOKEN]@github.com/[ORGANISATION]/[REPO].git


답변

보통 나는 이것을 좋아한다

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

git_token은 azure devops의 변수 구성에서 읽습니다.

여기에서 내 전체 블로그를 읽을 수 있습니다.


답변

ORG / REPO 섹션에서 거의 하루 종일 하드 코딩하는 동안이 문제를 해결하기 위해 빌드 스크립트에 ‘원격을 찾을 수 없음’이라는 두려운 오류가 발생하여 결국 TRAVIS_REPO_SLUG. 하드 코딩 된 속성에 대해 이것을 전환하면 즉시 작동했습니다.

git remote set-url origin https://[ORG]:${TOKEN}@github.com/${TRAVIS_REPO_SLUG}