1Password 8に上げてSSHキーを管理出来るようにする

1Password 8で見た目が変わったり機能が増えたりしていますが、自分が一番おっと思ったのはSSHキーを管理出来るという所ですね。
というわけで、メモがてら記事にしていこうと思います。

インストール

いま(2022/7/9)時点でまだMac AppStoreには8はきていないのでダウンロードします。

1password.com

1Password Installer.app を起動すれば自動的にアップデートされます。

だいぶ見た目が変わってます。(ダークモードに対応したのね)

設定

まずは設定を有効にします。
1Password > 環境設定 > 開発者
を開きます。

デフォルトだと何もチェックがついてない状態ですね。

SSHエージェントを使用する にチェックします。
1Password CLI用の生体認証ロック解除op というコマンドを使うようなのだがとりあえず今は使わないのでそのままです。

1PasswordがSSHキー名をディスクに保存出来るようにします を許可します。
FingerPrintを表示されても分からんしね。

~/.ssh/config に表示されているスニペットを追加します。(xxxxxxxxxxのところのパスは環境によって違うようです)

Host *
    IdentityAgent "~/Library/Group Containers/xxxxxxxxxx.com.1password/t/agent.sock"

Remember key approval が、until 1Password locks でも until 1Password quits でもどちらにしろロックしたらTouch IDが出てくるので、自動ロックの間隔を調整してもいいんじゃないでしょうか。
デフォルトの10分は自分には厳しすぎます。
1Password > 環境設定 > セキュリティ > 自動ロック
で、変更しちゃいます。

既存のキーを使ってSSHする

ラズパイへのSSHキーを1Passwordで管理してみます。
キーを作るときにEd25519かRSA(2048ビット以上)にしていない場合は作り直す必要があります。
お勧めはEd25519らしいです。

とりあえず既にあるRSAの鍵をインポートします。
+新規アイテム > SSHキー で登録します。

秘密鍵を追加 からキーファイルを読み込む でもいいし、ラズパイからわざわざ持ってこなこなくても クリップボードから鍵を張り付け で登録出来ます。
既存のキーならローカルにあるかもしれないですが、クリップボード貼り付けができるのは地味に便利。
パスフレーズが設定されていれば入力画面が出てきます。

キーが登録出来ました。

それではログインしてみます。
既存のキーなので ~/.ssh/authorized_keys は設定済みの想定です。

Touch IDでログイン出来ました!

ssh-keygenを使わずに1Passwordで新しいキーを作る事も出来ます。
その場合、秘密鍵をどこにもコピーせずに公開鍵をauthorized_keysに登録するだけなのでちょっと安心ですね。

Git Cloneできるようにする

個人ではGitHub、仕事ではBitbucketを使っているので両方試してみます。

GitHub

まずGitHubから。
Settings > SSH and GPG keys へ行きます。

New SSH keyを押します。

Titleをクリックすると、1Passwordのブラウザ拡張が入っていれば SSHキーの作成 が出ます。

作成と入力を押すとキーが作成されて1Passwordへ登録され、GitHubの画面に反映されますので、Add SSH key を押して登録します。

それではCloneしてみます。
まずはCLIで。

git clone git@github.com:gozuk16/test.git
Cloning into 'test'...
remote: Enumerating objects: 35, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 35 (delta 5), reused 14 (delta 5), pack-reused 21
Receiving objects: 100% (35/35), 5.04 KiB | 1.26 MiB/s, done.
Resolving deltas: 100% (9/9), done.

出来ました。

次に自分が使ってるGitクライアントのForkでやってみます。
CloneするときのプロトコルhttpsからSSHに切り替えます。

1PasswordがTouch IDの画面を出してくれるのでピッと触ればCloneできます。

うーん便利!

ちなみに、GitHubは2023年末までにTwo-factor authenticationを設定せよというわけで2FAも1Passwordで設定しています。
Sign inの時に1Passwordでパスワードを入力すると遷移先ではtokenが自動でセットされるので便利です。(まあいいという事にしといて...)

Bitbucket

基本的には同じです。
Personal settings > SSH 鍵 > 鍵を追加 でGitHubと同じように出来ます。

その他

  • いまのところ保管庫はデフォルトで作られるPersonalじゃないとダメみたいです

増えてくるとちょっと分かりにくくなるので、別の保管庫も何れ使えるようになるといいな。

  • TailscaleにSSHの接続管理をしてくれる機能が追加されたようです

tailscale.com

codezine.jp

TailscaleのエージェントにSSHを内包してるのかな?
sshdを立てる必要すらないという事で、結構すごいなーと思った。
こうなると1Passwordとか言ってる次元じゃないよね。
調べようと思ってるけど、いまのところ会社でTailscale使えないので何となく先送りしてる。。。