TL;DR
SSHの公開鍵配布を簡単にやる を読んでなるほどなと思ったので、自分の環境でもやってみることにしました。 つまり、GitHub に登録した SSH 公開鍵が URL で公開されていることを利用して、これを各種サーバに設置する公開鍵として使おうということです。 暗号強度にさえ気を使っていれば、面倒な公開鍵のサーバへの設置をコマンド一発で行うことができ、ついでに GitHub clone/push なども SSH 経由で行うことができる (HTTPS の場合の personal token が不要) のため便利そうです。
Operation policy
- 秘密鍵 (と公開鍵) の生成はクライアントごとに 1 個だけ作成する
- この際、暗号強度は十分高める (RSA 4096 bit など)
- 公開鍵は GitHub で公開し、これをサーバの
~/.ssh/authorized_keys
に登録する- 登録は、(サーバのネット接続前提だが) 以下のコマンドで行える
$ curl -sS https://github.com/astropenguin.keys >> ~/.ssh/authorized_keys
Make an SSH key pair on client
ここでは仮に test_rsa
1という秘密鍵を作成し、公開鍵 test_rsa.pub
を公開するとします。
まず、クライアント上で新規鍵を作成します。
この際、デフォルトでは RSA 2048 bit の鍵長となるので、以下のように明示的に変更します。
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C user@host -f test_rsa
-t
で鍵の種類を、 -b
で鍵長を、 -C
で公開鍵の最後に書かれるコメント2を、 -f
で秘密鍵の名前を指定します。
出来上がった鍵が所望の種類、鍵長になっていることを以下のコマンドで確認しておきます。
$ ssh-keygen -lf test_rsa
4096 SHA256:wXz5ff3T9ETG+exBF5IpzvRwhJcpOidKexcvkA61Kn0 user@host (RSA)
上記の設定通りの内容になっているので大丈夫ですね。
Paste public key on GitHub
上記で作成した 公開鍵を GitHub に登録します。 まず、公開鍵の中身のテキストを何らかの方法でコピーします。 ちなみに macOS ならば、以下のコマンドでクリップボードに入ります。
$ cat test_rsa.pub | pbcopy
次に、ブラウザで https://github.com/settings/keys を開き、 New SSH Key から公開鍵を登録します。 Title の部分には鍵のコメント (user@host) を書いておくと良いでしょう3。
最後に、クライアントから SSH 経由で GitHub に接続できることを確認します。 以下のように successfully authenticated と言われれば OK です。
$ ssh -T -i test_rsa git@github.com
Hi astropenguin! You've successfully authenticated,
but GitHub does not provide shell access.