Categories
Tags
Alamofire Android AppStoreConnect AWS Bun C++ cAdvisor CFW Cloudflare Cloudflare Access Cloudflare KV Cloudflare Tunnel Cloudflare Workers D1 Deno DevContainer Discord Docker ECR ECS Edizon Emulator EmuMMC Fastlane Firestore Frida Ghidra Git GitHub GitHub Actions GitLab GPG Grafana HACGUI Heroku Homebrew Hono IDA Pro iOS IPSwitch Jailbreak Javascript JSON JWT LanPlay Linode macOS Mirakurun MongoDB NestJS NextJS Nintendo Nintendo Switch NodeJS PHP PostgreSQL Prisma Programming Prometheus Python React Realm RealmSwift Ruby Salmon Run Salmonia3+ Shogi Sideload Snap Splatoon Splatoon2 Splatoon3 SSH Stable Diffusion Starlight Swift Swift Package SwiftUI Switch TensorRT Turf War Typescript TypeScript Ubuntu Ubuntu Server VNC VPN VSCode Vue WARP Wireguard XCode Xcode yarn zsh 家電 横歩取り
501 words
3 minutes
SSH接続時に毎回パスフレーズを入力するのを省略する
背景
SSH の秘密鍵作成時にパスフレーズを設定していると、ありとあらゆる入力のタイミングでパスフレーズを要求されます。
これが地味にめんどくさかったので信頼しているデバイスからはパスフレーズを自動で入力してくれるようにする設定を入れます。正確にはパスフレーズを Keychain から読み出しているみたいなので自動入力しているわけではないです。
技術
必要な処理は以下の二つ。
- Keychain にパスフレーズを保存する
- パスフレーズ要求時に Keychain から自動で読み出す
それについてはmacOS で再起動しても ssh agent に秘密鍵を保持させ続ける二つの方法で簡単に紹介されていて大体これで間違っていないのですが少し補足説明を入れます。
まず、-K
と-A
のオプションは既に非推奨となっており、入力すると以下のように警告が表示されます。
WARNING: The -K and -A flags are deprecated and have been replaced
by the --apple-use-keychain and --apple-load-keychain
flags, respectively. To suppress this warning, set the
environment variable APPLE_SSH_ADD_BEHAVIOR as described in
the ssh-add(1) manual page.
なので、本来入力すべきコマンドは、
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
となります。これをすると~/.ssh/id_ed25519
のパスフレーズが Keychain に追加されます。今日のご時世に ED25519 以外のデジタル署名アルゴリズムを使っている人はいないと思うのでこれで大丈夫です。
パスフレーズを Keychain に登録したあとはこれを SSH 接続時に読み込むようにします。
なので~/.ssh/config
を編集します。
Host GitHub
HostName github.com
User XXXXXXXX
IdentityFile ~/.ssh/id_ed25519
Host *
UseKeychain yes
AddKeysToAgent yes
のようにすれば任意の接続先に対して Keychain に保存されているパスフレーズを利用し、GitHub への SSH 接続に対してid_ed25519
を利用するように設定できます。
記事は以上。
SSH接続時に毎回パスフレーズを入力するのを省略する
https://fuwari.vercel.app/posts/2023/11/keychain/