명령줄 방법을 사용하거나 프로그래밍 방식으로 github.com 사용자 계정에 SSH 키를 추가하세요.

명령줄 방법을 사용하거나 프로그래밍 방식으로 github.com 사용자 계정에 SSH 키를 추가하세요.

github 사용자 계정에 ssh 키를 추가하기 위해 github.com 서버에 대한 사용자 이름과 비밀번호를 식별하는 방법이 있습니까? 지금까지 내가 읽은 모든 내용에는 사용자의 SSH 키가 웹 GUI를 통해 추가되어야 한다는 내용이 나와 있습니다. 명령줄 인터페이스나 bash/ansible/something 스크립트를 통해 키를 추가하는 방법이나 프로세스를 찾고 있습니다.

답변1

2020년 업데이트

에 명시된 바와 같이개발자 변경, 비밀번호 인증은 다음에서 더 이상 사용되지 않습니다.

2020년 11월 13일 16:00 UTC

또한 @trysis가 댓글에서 요청한 대로 2FA에 대한 솔루션이 필요합니다.

새로운 방법은개인 액세스 토큰: 여기에 이미지 설명을 입력하세요

특정 예(Ssh 키 추가)의 경우 쓰기 권한만 필요합니다(읽기 권한은 쓰기 권한을 사용할 때 자동으로 추가됨). 여기에 이미지 설명을 입력하세요

업데이트된 명령(curl을 통해):

curl -H "Authorization: token YourGeneratedToken" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys

이는 2FA가 활성화된 경우에도 작동합니다.


오래된

사용자 이름과 비밀번호를 사용한 인증은 다음과 같습니다.github API에서 지원:

GitHub API v3을 통해 인증하는 방법에는 세 가지가 있습니다. ...
기본 인증
$ 컬 -u "사용자 이름"https://api.github.com
...

그래서 그냥lib를 선택하세요선호하는 언어로 구현된 버전을 사용하세요.공개 키 생성"공개 키" API 섹션:

공개 키를 생성합니다. 기본 인증 또는 최소한 [write:public_key] 범위의 OAuth를 통해 인증되어야 합니다.

입력
POST /user/keys

{
    "title": "octocat@octomac",
    "key": "ssh-rsa AAA..."
}

컬을 통해 명령줄에서 사용하려면 다음을 수행하세요.

curl -u "username" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys

또는 비밀번호를 묻지 않고도:

curl -u "username:password" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys

여기에 대한 좋은 작은 튜토리얼이 있습니다컬을 사용하여 github API와 상호작용

답변2

xx4h의 답변과 유사하게 이것이 새 VM 설정을 자동화하기 위한 스크립트에서 수행하는 방법입니다.

ssh-keygen -t rsa -b 4096 -C "[email protected]"
curl -u "myusername" \
    --data "{\"title\":\"DevVm_`date +%Y%m%d%H%M%S`\",\"key\":\"`cat ~/.ssh/id_rsa.pub`\"}" \
    https://api.github.com/user/keys

이는 새로운 SSH 키를 제공하고 이를 컬 호출에 포함하며 GitHub 측의 각 항목에 대해 고유하지만 쉽게 식별할 수 있는 이름을 제공합니다(예: 지금 실행하면 DevVm_150602142247이 제공됩니다).

답변3

#!/bin/bash

set -xe
myemail="your-email"

#your personal access token
git_api_token="befdf14c152d6f2ad8cff9c5affffffffffffffffff"

#We'll use the HTTPS to push a ssh key to git, SSH for pull/push configuration
gitrepo_ssh="[email protected]:person/repo.git"
gitrepo_https="https://github.com/person/repo.git"

#Generating SSH key:
ssh-keygen -f "${HOME}/.ssh/id_rsa" -t rsa -b 4096 -C "${myemail}" -N ''
sslpub="$(cat ${HOME}/.ssh/id_rsa.pub |tail -1)"

#git API path for posting a new ssh-key:
git_api_addkey="https://api.$(echo ${gitrepo_https} |cut -d'/' -f3)/user/keys"

#lets name the ssh-key in get after the hostname with a timestamp:
git_ssl_keyname="$(hostname)_$(date +%d-%m-%Y)"

#Finally lets post this ssh key:
curl -H "Authorization: token ${git_api_token}" -H "Content-Type: application/json" -X POST -d "{\"title\":\"${git_ssl_keyname}\",\"key\":\"${sslpub}\"}" ${git_api_addkey}

답변4

새로운GitHub CLI gh, 당신은gh auth login+ gh ssh add

GitHub 계정에 SSH 키 추가

gh ssh-key add [<key-file>] [flags]

관련 정보