명령줄 방법 또는 프로그래밍 방식으로 SSH 키를 github.com 사용자 계정에 추가

명령줄 방법 또는 프로그래밍 방식으로 SSH 키를 github.com 사용자 계정에 추가

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으로 인증하는 방법에는 세 가지가 있습니다. ...
기본 인증
$curl -u "사용자 이름"https://api.github.com
...

그래서 그냥도서관을 선택하세요선호하는 언어 및 구현 버전 사용공개 키 생성"공개 키" 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

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

답변2

xx4h의 답변과 유사하게 이것이 새 가상 머신 설정을 자동화하는 스크립트에서 이 작업을 수행하는 방법입니다.

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]

관련 정보