답변:
사용자 이름과 비밀번호를 사용한 인증은 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와 상호 작용 하는 멋진 자습서입니다.
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).
#!/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}
또 다른 옵션은 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}