1Password に SSH 接続もコミット署名も管理してもらおう
はじめに
ポートではパスワードマネージャーとして 1Password を使用しています。
1Password にはもちろんパスワードを保存できるのですが、実は開発者向けの機能をいくつか提供しており、その 1 つとして SSH キーを保存 & 使用できる機能があります。
SSH キーを 1Password に保存すると、以下のような嬉しいポイントがあります。
- マシンの移行などで SSH キーを紛失する心配がなくて安心
- SSH キーを使用するには 1Password のロックを解除する必要があるので安全
❤️🔥
今回は基本的な使い方として SSH キーの生成と SSH 接続、そして GitHub の認証とコミット署名の設定を紹介します。
なお、この記事の内容は macOS 用 1Password での手順になります。
他のデバイスでも変わらないと思いますが、異なる点があった場合はよしなに読み替えてください。
SSH キーを生成 / インポートする
1Password を開いたら、"New item" → "SSH Key" で SSH キーを保存するためのダイアログが表示されます。
"Add Private Key" から、既存のキーをインポートするか新規に生成できます。
新規に作成する場合は、Ed25519 か RSA から選択して生成します。
保存した SSH キーは以下の画像のように表示され、ここで fingerprint の確認や公開鍵のコピーができます。
SSH 接続で使用する
まずは SSH 接続の際、1Password に保存した SSH キーを使用してくれるように設定する必要があります。
1Password の設定を開いて、"Developer" タブの "Use the SSH Agent" にチェックを入れ、SSH Agent を有効化します。
そして下にある "Change SSH Config..." をクリックして、表示されるコードを ~/.ssh/config
に追加します。
準備完了です!
SSH 接続自体の設定はここでは省きますが、これだけで ssh xxx
した際 1Password に保存された SSH キーで認証して接続してくれます。
1Password がロックされている場合は、以下ようなのダイアログが表示されロック解除を求められます。
Raspberry Pi 400 に接続しようとしてる
GitHub の認証に使用する
ここまでで SSH 認証に 1Password が使用されるように設定できたため、GitHub の認証については GitHub に公開鍵を登録するだけで OK です。
GitHub への公開鍵の登録は Add new SSH key から行えます。
今回は認証に使用する鍵なので、"Key type" は "Authentication Key" を選択して登録します。
1Password のブラウザ拡張機能を入れていると、入力補完もできます
設定はこれだけです。
あとは ssh -T git@github.com
や、git clone xxx
などで実際に接続できるか確認してみましょう。
(clone, fetch, push など、リモートリポジトリに接続するあらゆる操作で認証が必要なので、1Password をロックする機会が多いと多少面倒ではあります 🫤)
Git コミットの署名に使用する
まずは、認証の際と同様に GitHub に公開鍵を登録します。
Add new SSH key から、今回は署名用の鍵なので "Key type" は "Signing Key" を選択して登録してください。
次に、1Password で追加の設定が必要です。
1Password で署名に使用する SSH キーを表示して、メニューの "Configure Git Commit Signing" をクリックします。
コミット署名の設定のためのダイアログが表示されるので、表示されている内容を ~/.gitconfig
に追加します。
あとは通常通り git commit
などでコミットすれば署名されます。
(コミットのたびに認証が必要なので、1Password をロックする機会が多いと、GitHub の認証以上に面倒ではあります 🫤)
実際に署名されているか確認するには、GitHub にプッシュしてみましょう。
GitHub では署名されたコミットには画像のように "Verified" バッジが表示されます。
(正直自分のコミットが詐称されることはないと思いますが、このバッジがあるとなんとなくかっこいいので署名しています 😇)
署名されていないコミットには警告が表示されるようにする
全てのコミットで署名するようになったら、署名していないコミットには「詐称されてる危険がある!」と警告が表示されるようにしちゃいましょう。
GitHub の設定の SSH and GPG keys を開き、"Flag unsigned commits as unverified" にチェックを入れます。
これで署名していないコミットには、以下の画像のように "Unverified" バッジが表示されるようになります。
おわりに
今回は 1Password で SSH を管理する方法について紹介しました。
1Password には他にも、データベース接続設定を保存したり、CLI を使用して保存したトークンから env ファイルを生成したりと、開発者にとって便利な機能がいくつかあります。
まだ 1Password を使用したことがない方や、開発者向けの機能を知らなかったという方は、ぜひこの機会に試してみてください!
Discussion