ssh-agent – SSH鍵を安全に保持し、自動署名を行うエージェント

リモートアクセス

ssh-agent は、SSHの秘密鍵をメモリ上で安全に保持し、パスフレーズの再入力なしで署名(認証)を行うエージェントです。
実務では「Git操作のたびにパスフレーズを入力しないようにする」「複数サーバーへのSSH接続を効率化したい」場合に使われます。

構文(Syntax)

# ssh-agent を起動し、必要な環境変数を出力
ssh-agent

# 明示的にシェルに環境変数をロード
eval "$(ssh-agent)"

# 指定したシェルのみで起動
ssh-agent /bin/bash

# カスタムソケットで起動
ssh-agent -a SOCKET

ssh-add コマンドと併用して秘密鍵をエージェントに登録します。

ssh-add ~/.ssh/id_rsa

主なオプション一覧

オプション説明使用例
(なし)エージェントを起動し、環境変数セット用のスクリプトを出力ssh-agent
-a SOCKETソケットファイルの位置を指定ssh-agent -a /tmp/ssh-agent.sock
-cC-shell 用の環境変数形式で出力ssh-agent -c
-sBourne-shell 用の環境変数形式で出力(デフォルト)ssh-agent -s
-k既存のエージェントを停止(終了)ssh-agent -k
-dデバッグモードで動作を表示ssh-agent -d

実行例

例1: SSH エージェントを起動して環境変数をシェルに設定する

eval "$(ssh-agent)"

出力例

Agent pid 1234

例2: エージェントに秘密鍵を登録する

ssh-add ~/.ssh/id_ed25519

出力例

Enter passphrase for /home/user/.ssh/id_ed25519:
Identity added: /home/user/.ssh/id_ed25519

例3: 登録されている鍵を確認する

ssh-add -l

出力例

256 SHA256:xxxx... /home/user/.ssh/id_ed25519 (ED25519)

例4: エージェントを終了する(環境変数の解除)

ssh-agent -k

出力例

unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 1234 killed;

例5(エラー例): エージェント未起動で鍵を追加しようとする

ssh-add ~/.ssh/id_rsa

出力例(例)

Could not open a connection to your authentication agent.

eval "$(ssh-agent)" を先に実行する必要があります。

関連コマンド

  • ssh-add
    秘密鍵を ssh-agent に追加・削除するコマンド。
  • ssh
    リモートサーバーへ接続するコマンド。agent があるとパスフレーズ入力が不要になる。
  • ssh-keygen
    SSH 認証鍵を作成・管理するためのコマンド。
  • gpg-agent
    GPG鍵とSSH代理機能を兼ねる場合がある SSH Agent の代替。

備考

  • ssh-agent は常にメモリ上に秘密鍵を保持し、ディスクに保存しないため安全性が高い。
  • ただしログインセッションや tmux/screen の切り替えで環境変数が消える場合があるため注意。
  • Desktop環境(GNOME Keyring, KDE Wallet など)では GUI のエージェントが既に稼働している場合がある。
  • macOS では ssh-agent が OS に統合され、一部挙動が異なる(自動鍵読み込みなど)。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント