
github ユーザー アカウントに SSH キーを追加する目的で、github.com サーバーにユーザー名とパスワードでアクセスする方法はありますか? これまで読んだ情報はすべて、ユーザーの SSH キーは Web GUI 経由で追加する必要があることを示唆しています。コマンド ライン インターフェイスまたは bash/ansible/何かのスクリプト経由でキーを追加する方法またはプロセスを探しています。
答え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 で認証する方法は 3 つあります。...
基本認証
$ curl -u "username"https://api.github.com
...
これだけライブラリを選択お好みの言語で、実装されたバージョンを使用してください公開鍵を作成する「公開鍵」APIセクション:
公開鍵を作成します。Basic Auth または少なくとも [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 とやり取りする
答え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 キーが提供され、それが curl 呼び出しに含まれ、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]