SSH が毎回パスフレーズを聞いてくるのを止める
SSH が接続のたびに Enter passphrase for key と表示し続ける場合、パスフレーズを削除する必要はありません(削除すると秘密鍵が無防備になります)。代わりに、鍵を一度 ssh-agent に読み込ませれば、そのセッションの残りの間、解除済みの鍵をキャッシュしてくれます:
ssh-add ~/.ssh/id_ed25519 パスフレーズを入力するのは一度だけ。それ以降の接続はすべて無言で済みます。本記事では Linux/macOS/Windows での ssh-agent、自動化の方法、そしてモバイルでの相当する仕組みを扱います。
パスフレーズあり vs なし
パスフレーズはディスク上の秘密鍵を暗号化するため、ノートパソコンを盗まれてもサーバーへのアクセスまで渡してしまうことはありません。この保護は残しておく価値があります。煩わしさ ── 何度も入力すること ── は、パスフレーズを削除することではなく、エージェントで解決します。つまり:パスフレーズは残し、エージェントを使う。
ssh-agent を使う(Linux/macOS)
# start the agent if it isn't running:
eval "$(ssh-agent -s)"
# add your key (type the passphrase once):
ssh-add ~/.ssh/id_ed25519
# list loaded keys:
ssh-add -l macOS では、パスフレーズを Keychain に保存しておくと、再起動後も自動的に読み込まれます:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 そして ~/.ssh/config に追加しておけば、最初の利用時に意識せずとも鍵が読み込まれます:
Host *
AddKeysToAgent yes
UseKeychain yes Windows の場合
組み込みの OpenSSH エージェントサービスを一度有効にしてから、鍵を追加します:
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519 Windows のエージェントは再起動をまたいで保持されるため、鍵を一度追加すればそれで忘れて構いません。
パスフレーズの変更または削除
実際に変更したい場合(あるいはパスフレーズのない鍵に設定したい場合):
ssh-keygen -p -f ~/.ssh/id_ed25519 古いパスフレーズを尋ねられ、次に新しいパスフレーズを尋ねられます(空のままにすると削除)。完全に削除するのは便利ですが、ファイルをコピーした誰もがあなたのアクセス権を手にすることを意味します ── エージェントを使うほうがよいでしょう。
スマホの場合
モバイルクライアントは ssh-agent を公開していません ── 相当する仕組みを内部で処理します。TermAI では鍵はデバイスの Keychain に保存され、スマホ自身の生体認証/パスコードで解除されるため、接続ごとにパスフレーズを再入力することはありません。デバイスのセキュリティがそのままエージェントなのです。暗号化された鍵のセキュリティを保ちつつ、ワンタップで接続できます。
よくある質問
SSH が毎回パスフレーズを聞いてくるのを止めるには?ssh-add ~/.ssh/id_ed25519 で鍵を一度 ssh-agent に読み込ませます;そのセッションの間、解除済みの鍵をキャッシュします。~/.ssh/config に AddKeysToAgent yes を追加すれば自動化できます。
代わりにパスフレーズを削除すべき?
やめておくほうがよいでしょう ── パスフレーズはディスク上の秘密鍵を暗号化します。利便性には ssh-agent を使い、保護は維持しましょう。
再起動後もパスフレーズを保持させるには?
macOS では ssh-add --apple-use-keychain と UseKeychain yes を使います;Windows では ssh-agent サービスを自動起動に設定します。鍵はその後ひとりでに読み込まれます。
鍵のパスフレーズを変更するには?ssh-keygen -p -f ~/.ssh/id_ed25519 を実行します;鍵自体を変えずにパスフレーズを変更します。
クイックファクト
- パスフレーズは削除しない ── ディスク上の鍵を暗号化するため;代わりにエージェントを使う
- キャッシュする:
ssh-add ~/.ssh/id_ed25519(セッションごとにパスフレーズを一度入力) - 自動化:
~/.ssh/configにAddKeysToAgent yes;macOS Keychain / Windows エージェントが保持 - 変更する:
ssh-keygen -p -f ~/.ssh/key - モバイル:デバイスの Keychain + 生体認証がエージェント
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.