回答:
ユーザー名とパスワードによる認証はgithub apiでサポートされています:
GitHub API v3を介して認証するには、3つの方法があります。...
基本認証
$ 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}