ssh-agentとは?秘密鍵のパスフレーズ入力を省略する仕組みを解説

目次
ssh-agentを利用してSSH鍵認証を効率化しよう
SSH公開鍵認証では、秘密鍵にパスフレーズを設定することでセキュリティを高めることができます。
しかしパスフレーズを設定すると、SSH接続のたびに入力が必要になるため、複数のサーバを管理している環境では手間が増えてしまいます。
そこで利用されるのがssh-agentです。
ssh-agentを利用すると、一度パスフレーズを入力するだけで、その後は複数回のSSH接続やscp、sftpなどで再入力を省略できます。
実務ではLinuxサーバ管理やGitHub利用、Ansibleによる自動化などで広く利用されています。
本記事ではssh-agentの仕組みや使い方、実務での活用方法について詳しく解説します。
ssh-agentとは
ssh-agentはSSH秘密鍵をメモリ上に保持するためのプログラムです。
一度認証した秘密鍵を記憶し、SSHクライアントからの要求に応じて認証処理を代行します。
これにより秘密鍵のパスフレーズ入力を何度も繰り返す必要がなくなります。
なぜssh-agentが必要なのか
例えば以下のような環境を考えてみます。
- Webサーバ
- DNSサーバ
- メールサーバ
- 監視サーバ
すべて公開鍵認証を利用し、秘密鍵にはパスフレーズを設定しているとします。
ssh-agentがない場合は接続するたびにパスフレーズ入力が必要になります。
管理対象が増えるほど負担は大きくなります。
ssh-agentを利用すれば、一度だけ入力すれば済みます。
ssh-agentの仕組み
動作の流れは次のようになります。
- ssh-agentを起動する
- 秘密鍵を登録する
- パスフレーズを入力する
- 秘密鍵をメモリ上に保持する
- SSH接続時に認証を代行する
秘密鍵そのものを毎回読み込むのではなく、ssh-agentが認証を代行している点が特徴です。
ssh-agentを起動する
Linuxでは次のコマンドで起動できます。
$ eval $(ssh-agent)
実行例です。
Agent pid 12345これでssh-agentが起動しました。
秘密鍵を登録する
起動後はssh-addコマンドで秘密鍵を登録します。
$ ssh-add ~/.ssh/id_ed25519
パスフレーズ入力を求められます。
Enter passphrase for ~/.ssh/id_ed25519:正しく入力すると登録が完了します。
登録済み鍵を確認する
現在登録されている鍵を確認できます。
$ ssh-add -l
実行例です。
256 SHA256:xxxxxxxxxxxxフィンガープリントが表示されます。
SSH接続してみる
登録後は通常通り接続します。
$ ssh user@serverパスフレーズ入力なしで接続できるようになります。
秘密鍵はssh-agentが管理しています。
複数の鍵を登録する
複数サーバを管理する場合は複数の秘密鍵を登録できます。
$ ssh-add ~/.ssh/web_key
$ ssh-add ~/.ssh/dns_key
$ ssh-add ~/.ssh/mail_key用途ごとに鍵を分けて管理できます。
登録済み鍵を削除する
不要になった鍵は削除できます。
$ ssh-add -d ~/.ssh/id_ed25519
すべて削除する場合です。
$ssh-add -D共有端末利用後には重要な操作です。
ssh-agentを終了する
エージェントを停止する場合は以下を実行します。
$ ssh-agent -k登録済み鍵も利用できなくなります。
GitHubでも利用される
ssh-agentはGitHubやGitLabでも利用されています。
例えば以下のような操作です。
git clone
git pull
git push毎回パスフレーズを入力する必要がなくなります。
scpやsftpでも利用可能
ssh-agentはSSHだけではありません。
以下のコマンドでも利用されます。
- scp
- sftp
- rsync -e ssh
- git
OpenSSHを利用する多くのツールで有効です。
SSH設定ファイルとの組み合わせ
configと組み合わせるとさらに便利です。
Host web01
HostName 192.168.60.101
User student
IdentityFile ~/.ssh/id_ed25519ssh-agentに登録しておけば以下だけで接続できます。
ssh web01
実務での利用例
- 複数サーバ管理
- クラウド環境運用
- Ansible実行
- GitHub利用
- CI/CD環境
- バックアップ処理
インフラエンジニアが日常的に利用する機能です。
セキュリティ上の注意点
便利な機能ですが注意も必要です。
- 共有PCでは利用後に削除する
- 離席時は画面ロックする
- 不要な鍵を登録しない
- 秘密鍵自体は安全に保管する
ssh-agentは秘密鍵をメモリ上に保持しているため、ログイン状態の管理が重要です。
よくあるトラブル
鍵が見つからない
Could not open a connection to your authentication agent
ssh-agentが起動していない可能性があります。
再度以下を実行します。
eval $(ssh-agent)
登録したのに認証されない
利用する秘密鍵が異なる可能性があります。
以下で確認しましょう。
$ ssh-add -lまとめ
ssh-agentは秘密鍵をメモリ上に保持し、SSH認証を代行する便利な仕組みです。
パスフレーズ付き秘密鍵を安全かつ効率的に運用できるため、実務では広く利用されています。
SSHだけでなくscp、sftp、GitHubなどでも利用できるため、Linux管理者であればぜひ習得しておきたい機能です。
公開鍵認証を利用している環境では、ssh-agentを活用して安全性と利便性を両立しましょう。






