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


18

github 사용자 계정에 ssh 키를 추가하기 위해 github.com 서버의 사용자 이름과 비밀번호로 식별하는 방법이 있습니까? 지금까지 읽은 모든 내용은 웹 GUI를 통해 사용자의 ssh 키를 추가해야 함을 나타냅니다. 커맨드 라인 인터페이스 또는 bash / ansible / something 스크립트를 통해 키를 추가하는 방법이나 프로세스를 찾고 있습니다.


1
어떻게 사용하는 방법에 대한 몇 가지 라이브러리를 사용하는 GitHub의의 API를 ?
sr_ 2016 년

답변:


15

사용자 이름과 비밀번호를 사용한 인증은 github api에서 지원됩니다 .

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

그러니 그냥 lib 디렉토리를 선택 당신이 선호하는 언어와의 구현 버전 사용 만들기 공개 키는 "공개 키"API 섹션을 :

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

입력
POST /user/keys

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

curl을 통해 명령 행에서 사용하려면 :

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와 상호 작용 하는 멋진 자습서입니다.


이것은 내가 찾던 정보의 종류입니다! 대단히 감사합니다!
cmosetick 2016 년

7

xx4h의 답변과 비슷하게 새로운 VM 설정을 자동화하기 위해 스크립트에서 수행하는 방법입니다.

ssh-keygen -t rsa -b 4096 -C "myemailaddress@hotmail.com"
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 키를 제공하고 curl 호출에 포함하며 GitHub 측의 고유하지만 여전히 쉽게 식별 할 수있는 이름을 제공합니다 (예 : 지금 실행하면 DevVm_150602142247).


1
#!/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="git@github.com: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}

0

또 다른 옵션은 API 토큰을 사용하는 것입니다 ... 내부 gitLab 서버에서 다음을 사용합니다

단편:

#!/bin/bash

myemail="first.last@domain.com"

# User API token can be found: "https://git.labs.domain.com/profile/account"
git_api_token="m3iP27Jh8KSgNmWAksYp"

# We'll use the HTTPS to push a ssh key to git, SSH for pull/push configuration
gitrepo_ssh="git@git.labs.domain.com:devops/automation.git"
gitrepo_https="https://git.labs.domain.com/devops/automation.git"

########################]  D O   N O T   C H A N G E  [########################

# 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://$(echo ${gitrepo_https} |cut -d'/' -f3)/api/v3/user/keys"

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

# Finally lets post this ssh key:
curl -H "PRIVATE-TOKEN: ${git_api_token}" -H "Content-Type: application/json" \
    -X POST -d "{\"title\":\"${git_ssl_keyname}\",\"key\":\"${sslpub}\"}"     \
    ${git_api_addkey}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.