📝

Security Keyを利用したSSH Git operationsを試してみた

2021/05/11に公開

Git操作においてSecurity Keyが利用できる様になったとのことで試してみました。
https://github.blog/2021-05-10-security-keys-supported-ssh-git-operations/

OpenSSH version 8.2以上で利用可能なので、必要に応じてopensshのバージョンを上げます。

$ brew install openssh

以下の通りメールアドレスを指定してコマンドを実行します。

$ ssh-keygen -t ecdsa-sk -C <email address> 
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.
Enter file in which to save the key (/path/.ssh/id_ecdsa_sk):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /path/.ssh/id_ecdsa_sk
Your public key has been saved in /path/.ssh/id_ecdsa_sk.pub
The key fingerprint is:
SHA256:<finger print> <email address> 
The key's randomart image is:
+-[ECDSA-SK 256]--+
|             ....|
|           . o. o|
|          o OE+.o|
|         . %.Xo =|
|        S o X.+*.|
|          ..oOBoo|
|         . o+X++ |
|          . + * .|
|           . o . |
+----[SHA256]-----+

PCに接続されているSecurity Keyを認識してUser Presenceが要求される。その後はパスフレーズの設定などを適宜実施します。

id_ecdsa_sk.pubというファイル名で公開鍵が作成されているので、通常SSH鍵を登録するのと同様にGitHubに登録します。

これでGitHub操作を実施する際に以下の通りSecurity Keyが要求されるようになります。
失敗時

$ git clone git@github.com:github/secure_headers.git
Cloning into 'secure_headers'...
Confirm user presence for key ECDSA-SK SHA256:<finger print>
sign_and_send_pubkey: signing failed for ECDSA-SK "/path/.ssh/id_ecdsa_sk": invalid format
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

成功時

$ git clone git@github.com:github/secure_headers.git
Cloning into 'secure_headers'...
Confirm user presence for key ECDSA-SK SHA256:<finger print>
User presence confirmed
remote: Enumerating objects: 6687, done.
remote: Counting objects: 100% (335/335), done.
remote: Compressing objects: 100% (216/216), done.
remote: Total 6687 (delta 196), reused 227 (delta 118), pack-reused 6352
Receiving objects: 100% (6687/6687), 1.54 MiB | 2.85 MiB/s, done.
Resolving deltas: 100% (3671/3671), done.

参考

GitHubで編集を提案

Discussion