コマンドラインまたはプログラムでSSHキーをgithub.comユーザーアカウントに追加する

コマンドラインまたはプログラムでSSHキーをgithub.comユーザーアカウントに追加する

githubユーザーアカウントにSSHキーを追加できるように、github.comサーバーのユーザー名とパスワードを識別する方法はありますか?これまでに読んだ内容は、ユーザーのSSHキーがWeb 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で認証する方法は3つあります。 ...
基本認証
$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]

関連情報