Pageant は SSH の 認証エージェントです。 秘密鍵を復号した状態でメモリに保持するので、パスフレーズを入力せずに何度も使えます。
Pageant を実行する前に秘密鍵を *.PPK
形式で用意します。生成と使用方法は chapter 8 を参照してください。
Pageant を実行するとシステムトレイに帽子を被ったコンピュータのアイコンが表示されます。そして秘密鍵を読み込むまではただそこにあるだけで何もしません。 (おそらく Windows の“隠れてるインジケーターを表示”矢印アイコンを使わないと Pageant アイコンが見えません。)
Pageant のアイコンを右クリックするとメニューを表示します。 “鍵の一覧 / View Keys”を選ぶとメインウインドウが表示されます。 (アイコンをダブルクリックしても表示できます。)
Pageant のウインドウはリストボックスがあります。ここに Pageant が保持している秘密鍵が表示されます。 Pageant を起動したときは何も秘密鍵がないので一覧は空です。鍵を追加すると表示されます。
鍵を Pageant に追加するには“鍵の追加 / Add Key”ボタンを押します。 “秘密鍵ファイルの選択 / Select Private Key File”ファイルダイアログが表示されるので秘密鍵を選んで“開く”を押します。
これで Pageant が秘密鍵を読み込みました。もし鍵がパスフレーズで保護されている場合、Pageant はパスフレーズを入力するように求めてきます。 ([Custom] 過去にパスワードの記憶機能がありましたが現在は利用できません。理由については question A.2.8 を参照してください。) 鍵が読み込まれると Pageant ウインドウ内の一覧に表示されます。
これで PuTTY を起動して鍵を受け取るサイトに SSH セッションを接続すると、PuTTY は Pageant が起動していると気づき、Pageant から鍵を取得して認証に使用します。
([Custom] 確認ダイアログが表示されるかもしれません。Section 9.6.1 を参照してください。)
もうパスフレーズを入力せずに好きなだけ PuTTY のセッションを接続できるようになりました。
(PuTTY は Pageant を使わないように設定できます。詳細は section 4.23.4 と section 3.11.3.9 を参照してください。)
訳注: 追加した鍵の数だけ認証を試みます。そのため多数の鍵を追加すると、サーバ側で認証試行回数などの制限に当たり認証失敗となる場合があります。これを回避するには、使用したい鍵と同じ公開鍵か秘密鍵を、Pageant 使用時にも設定するか (section 4.24.1)、または接続時にコマンドラインオプション (section 3.11.3.18) で指定します。
Pageant を終了したいときはシステムトレイの Pageant アイコンを右クリックして、メニューから“終了 / Exit”を選びます。 Pageant のメインウインドウを閉じても Pageant は終了しません。
もし Pageant を起動したままで、追加した鍵をすべて取り除きたいときは、システムトレイアイコンのメニューから“すべての鍵を削除 / Remove All Keys”を選びます。
Pageant のメインウインドウは Pageant のシステムトレイアイコンをダブルクリックするか、右クリックしてメニューから“鍵の一覧 / View Keys”を選ぶと表示されます。 Pagaent に読み込んだ鍵を確認でき、新しく追加したり既存の鍵を取り除いたりできます。
メインウインドウの大きなリストボックスに Pageant に読み込まれた秘密鍵の一覧が表示されます。一覧はこのように表示されます:
Ed25519 SHA256:TddlQk20DVs4LRcAsIfDN9pInKpY06D+h4kSHwWAj4w
RSA 2048 SHA256:8DFtyHm3kQihgy52nzX96qMcEVOq7/yJmmwQQhBWYFg
それぞれの鍵について、リストボックスが表示するのは:
authorized_keys
に使う ssh-keygen
など外部のツールによる指紋とも同じです。
SSH-2 鍵の場合、デフォルトでは“SHA256”形式で表示されます。 “指紋の種類 / Fingerprint type”ドロップダウンで、古い“MD5”形式にも変更できます (aa:bb:cc:...
のように表示されます)。しかしこの古い形式はより安全性が低く、可能ならば指紋の比較に使うべきではありません。
Pageant に読み込まれた鍵が証明書付きの場合、Pageant はデフォルトでは元となる鍵の指紋を表示します。これによって証明書付きでもそうでなくても同じ鍵には同じ指紋が表示されるので、それらが一致することが見て判ります。あるいは代わりに“指紋の形式 / Fingerprint type”ドロップダウンを使って証明書付きの鍵に別の指紋を表示できます。その場合証明書も含めた指紋データを表示するので、二つの証明書を区別できます。
Pageant にローカルファイルから鍵を読み込むにはメインウインドウの“鍵の追加 / Add Key”ボタンを押すか、システムトレイの Pageant アイコンを右クリックし、メニューから“鍵の追加 / Add Key”を選びます。
Pageant は“秘密鍵ファイルの選択 / Select Private Key File”というファイルダイアログを表示します。秘密鍵のファイルを探して“開く / Open”を押します。複数の鍵を一度に追加したいならば、Shift-クリック (隣接する項目を選択) か Ctrl-クリック (個別の項目を選択) します。
これで Pageant は秘密鍵を読み込みます。鍵がパスフレーズで保護されている場合、Pageant はパスフレーズを入力するよう求めます。
(これだけが Pageant に秘密鍵を追加する方法ではありません。エージェント転送を使ってリモートシステムからも追加できます。詳細は section 9.4 を参照してください。)
Pageant から鍵を取り除きたいときは、鍵を一覧から選んで“鍵の削除 / Remove Key”ボタンを押します。 Pageant はメモリ上の鍵を削除します。
“鍵の追加 / Add Key”で追加した鍵と、リモートからエージェント転送で追加した鍵 (section 9.4 参照) の両方で使用できます。この二つに違いはありません。
Pageant はコマンドラインを指定して起動時に処理を自動化できます。 Windows の GUI から Pageant を起動する場合、Windows ショートカットのプロパティを編集して指定できます。
Pageant がすでに動作中の場合、オプションを指定してもう一度起動すると新しい Pageant は起動せず、動作中の Pageant が処理を行います。
訳注: 長い名前のコマンドラインオプションは、これまで -long_name
あるいは -long-name
という形式でしたが、バージョン 0.77 より Pageant では GNU 形式の --long-name
にもすべてのオプションで対応しました。以下の説明ではそれらが混在していますが、意味に違いはありません。
Pageant はコマンドラインに指定した複数の秘密鍵を起動時に自動で読み込めます。コマンドラインはこのようになります:
C:\PuTTY\pageant.exe D:\main.ppk D:\secondary.ppk
鍵が暗号化されている場合、Pageant は起動時にパスフレーズを求めます。
Pageant がすでに動作している場合、そちらの Pageant に鍵を読み込みます。
Pageant が起動してコマンドラインで指定した鍵を読み込んだときに別のプログラムを起動するようにできます。そうするとそのプログラム (PuTTY とか、Plink を使う WinCVS など) は Pageant が読み込んだ鍵を使えます。
C:\PuTTY\pageant.exe D:\main.ppk -c C:\PuTTY\putty.exe
訳注: -c
の後はすべて別プログラムのパラメータになります。
Windows 版 OpenSSH は Pageant と同じ仕組みで SSH エージェントと通信します (Windows 名前付きパイプ)。つまり Windows OpenSSH は Pageant の名前付きパイプを見つけられれば、直接 Pageant と通信できます。
Pageant が起動した時、Windows の ssh.exe
にどこから Pageant と通信できるかを教えるための OpenSSH の設定ファイルを書き出すことができます。 Windows の SSH 設定にこのファイルを追加すると、ssh.exe
は自動的に Pageant をエージェントとして使うため、鍵を一か所にまとめておいて両方の SSH クライアントから使えます。
オプション --openssh-config
と、続けてファイル名を記述します。
OpenSSH の設定からこのファイルを参照するためには “Include
” ディレクティブを使います。例えば、次のように Pageant を起動します: (もちろんユーザ名は書き換えてください)
pageant --openssh-config C:\Users\Simon\.ssh\pageant.conf
そして、このようにディレクティブを設定ファイル “.ssh\config
” に追記します。 (pageant.conf
が同じディレクトリにある場合です。)
Include pageant.conf
注意: この方法は Windows 版の C:\Windows\System32\OpenSSH\ssh.exe
にインストールされる OpenSSH でのみ動作します。 (見つからない場合、インストールの追加機能としてインストールできます。例えば、設定 > アプリ(と機能) > オプション機能 > 機能の追加 > OpenSSH クライアント にあります。)
他のバージョンの OpenSSH for Windows もあります。有名なのは Windows 版 git
添付のものです。これらは同じ設定では動かないでしょう。なぜならそれらは MinGW や MSYS といった Unix エミュレーションレイヤーに依存していることが多く、Windows のパス記法や名前付きパイプを利用できないことが多いからです。上記の手順は Windows に添付された OpenSSH でのみ動作します。
そのため Windows の git
で Pageant の持つ SSH 鍵を使いたいならば、環境変数 GIT_SSH
が別のプログラムを指すようにしなくてはなりません。先ほどの手順を行えば c:\Windows\System32\OpenSSH\ssh.exe
に設定もできます – ですが、Plink を指定するのも同じくらい簡単です!
Pageant は WinSock 実装の“Unix ドメインソケット”からの接続を受け付けられます。これは初期の Windows Subsystem for Linux (現在 WSL 1 と呼ばれます) にある Unix ドメインソケットと相互運用できます。そのため Pageant にこれらから受け付けるように指定すると、WSL 1 のプロセスは Pageant と直接通信できます。
設定するには、Pageant を --unix
オプションにパス名を付けて起動します。そうしたら、WSL 1 の環境変数 SSH_AUTH_SOCK
に そのパス名を WSL 用に変換した上で設定します。
例えば、このように起動して
pageant --unix C:\Users\Simon\.ssh\agent.sock
WSL 1 で、環境変数には
SSH_AUTH_SOCK=/mnt/c/Users/Simon/.ssh/agent.sock
あるいは、WSL の .ssh/config
ファイルに一行
IdentityAgent /mnt/c/Users/Simon/.ssh/agent.sock
と追加します。しかしこれは ssh
コマンド自体には使えますが、ssh-add
コマンドがエージェントを見つけられません。
セキュリティのメモ: Unix ドメインソケットは親ディレクトリのファイル保護によって他のユーザのアクセスから守っています。もしあなたの Windows 機がマルチユーザ環境ならば、ソケットは他のユーザが全くアクセスできないディレクトリに作ります。 (実際には環境を問わず一般の原則として、良い考えです。)
互換性のメモ: WSL 2 のプロセスはこの方法では Pageant と通信できません。 because WSL 2 の Unix ドメインソケットは別個の Linux カーネルで管理されていて、WinSock のカーネルとは異なるためです。
Pageant を --keylist
オプションで起動すると、起動してすぐにメインウインドウを表示します。
Pageant は他の PuTTY ユーティリティと同様に -restrict-acl
オプションに対応しており、Pageant プロセスのアクセス制御をロックダウンできます。必要性については Section 3.11.3.28 を参照してください。
デフォルトでは Pageant が -restrict-acl
オプションで起動しても、Pageant のシステムトレイメニューから起動した PuTTY にオプションは引き継がれません。 -restrict-putty-acl
で挙動を変更できます。 (これについても詳細は section 3.11.3.28 を参照してください。)
[Custom] Pageant に -reencrypt-on
オプションを渡すと、再暗号化できる鍵すべての再暗号化を自動で行えます。書式は次の通りです:
-reencrypt-on=PARAMETERS
PARAMETERS
にはどのような状況で再暗号化を行うかを ,
(コンマ) 区切りのパラメータで指定します:
suspend
display_off
away
lid_close
any_event
idle:MINUTES
MINUTES
には 1 から 14400 の範囲の数で時間(分)を指定します。また時間の単位として s
(秒), m
(分), h
(時間), d
(日) を接尾できます。時間は Windows のタイマー機構を使用するため、実時間通りにはならない場合があります。
timeout:MINUTES
MINUTES
の指定は idle:
と同様です。
suspend
, display_off
, away
, lid_close
については先頭に -
(マイナス) を付けて any_event
の指定から除外できます。
display_off
, away
, lid_close
は Windows 7 では対応していない場合があります。また lid_close
は PC が対応している必要があります。
指定例:
C:\PuTTY\pageant.exe -reencrypt-on=any_event,-display_off,timeout:10.5h
エージェント転送とは SSH サーバ上のアプリケーションがクライアント上のエージェントと通信する仕組みです。
今のところ SSH-2 のエージェント転送が使えるかはサーバによります。 Pageant のプロトコルは OpenSSH と互換性があります。 ssh.com
サーバは異なるエージェントプロトコルを使います。 PuTTY はまだサポートしていません。
エージェント転送を有効にするには、まず Pageant を起動します。そして “エージェント転送を許可する / Allow agent forwarding” が有効になった PuTTY の SSH セッションを設定します (section 4.23.7 参照)。セッションを普通に開きます。 (代わりにコマンドラインオプション -A
も使えます。Section 3.11.3.10 を参照してください。)
うまく行くと、サーバのアプリケーションは Unix ドメインソケットにアクセスできるようになります。 SSH サーバがソケットから PuTTY に、PuTTY はエージェントに転送します。実際にそうなっているかは Unix サーバマシンで次のコマンドを入力して確認できます:
unixbox:~$ echo $SSH_AUTH_SOCK
/tmp/ssh-XXNP18Jz/agent.28794
unixbox:~$
結果が空行の場合、エージェント転送が有効になっていません。
これで ssh
をサーバで実行して接続した別のサーバが Pageant の鍵を承認すると、パスワードなしでログインできます:
unixbox:~$ ssh -v otherunixbox
[...]
debug: next auth method to try is publickey
debug: userauth_pubkey_agent: trying agent key my-putty-key
debug: ssh-userauth2 successful: method publickey
[...]
その SSH 接続でもエージェント転送を有効にすると (方法はサーバ側の SSH クライアントのマニュアルを参照してください)、認証鍵は接続した次のマシンでも使えます。 2 つの SSH 接続を介して実際の鍵があるわけです。
さらに、それら SSH サーバに秘密鍵がある場合、そのサーバで ssh-add
コマンドを実行して Pageant に送れます:
unixbox:~$ ssh-add ~/.ssh/id_rsa
Need passphrase for /home/fred/.ssh/id_rsa
Enter passphrase for /home/fred/.ssh/id_rsa:
Identity added: /home/fred/.ssh/id_rsa (/home/simon/.ssh/id_rsa)
unixbox:~$
これでエージェント転送をしているそれぞれのマシンで使えるようになります (追加したクライアントより下流のサーバだけではありません)。
鍵は復号せずに Pageant に追加できます。鍵ファイルは Pageant のメモリに暗号化されたまま保持されて、クライアントプログラムが最初に鍵を使おうとしたときに、Pegeant はダイアログボックスを表示し、復号するためのパスワードを求めます。
これは鍵を使うのがローカルで動作する PuTTY でも、リモートクライアントでエージェント転送を使って Pageant にアクセスしていても同様に行われます。
[Custom] 署名にパスフレーズが必要な場合は、署名の確認ダイアログは表示されません。
鍵を Pageant に暗号化されたまま追加するには、Pageant のメインウインドウで“鍵の追加 (暗号化状態) / Add Key (encrypted)”を押すか、システムトレイの Pageant アイコンを右クリックし、メニューから“鍵の追加 (暗号化状態) / Add Key (encrypted)”を選びます。 Pageant はファイル選択ダイアログを表示するので、通常の“鍵の追加”ボタンと同様に鍵を選びます。しかしパスフレーズは求められません。代わりに、鍵はメインウインドウに“(暗号化状態 / encrypted)”という文字付きで表示されます。
Pageant を起動するときに最初から暗号化状態の鍵を読み込むには、“--encrypted
”オプションをコマンドラインで指定します。例えば:
C:\PuTTY\pageant.exe --encrypted d:\main.ppk
鍵が復号されて最初に使われると、復号されたままとなるため何度でも署名に利用できます。メインウインドウは鍵を“(再暗号化可能 / re-encryptable)” として表示します。ここから、パスフレーズが必要な暗号化状態に戻せます。 Pageant のメインウインドウにある“再暗号化 / Re-encrypt”ボタンを押します。
すべての暗号化状態で追加した鍵は、システムトレイメニューの“すべての鍵を再暗号化 / Re-encrypt All Keys”によって“再暗号化 / re-encrypt”できます。 (暗号化状態で追加していない復号した鍵は維持されるので注意してください。)
注意: Pageant が持っている鍵を復号するためにパスフレーズを要求するダイアログを表示した際、入力ダイアログにフォーカスを設定できません。私が知る限り、これは悪意のあるソフトウェアに対応するための、Windows による意図的な対策です。そのためパスフレーズを入力する前には入力ダイアログをクリックしてください。そうしないと、あなたが入力したパスフレーズが信頼していないどこかに送られてしまうかもしれません!
Pageant を公開鍵認証に使うとパスフレーズを毎回入力せず複数の SSH セッションを開けて便利です。さらに復号した秘密鍵をディスクに置かないのでセキュリティ上の利点もあります。セキュリティと利便性の丁度よい妥協点と多くの人が感じています。
しかしやはりこれは妥協です。復号した秘密鍵を Pageant のメモリ上に持つのは、ディスク上の見つけやすいファイルとして保管するよりは良いですが、どこにも保管しないよりはセキュリティが劣ります。これは 2 つの理由によります:
同様に、エージェント転送は他の簡単な認証よりセキュリティが改善していますが、完璧ではありません。 Windows の Pageant に鍵を持つ方がリモートサーバ自身に持つよりも (それがサーバ上のエージェントでも暗号化なしでディスクに置くのでも) セキュリティ的に有利です。なぜならサーバが復号した秘密鍵を扱うなら、管理者やマシンをクラックした人は誰でも鍵を盗んで好きなだけあなたに成りすませるからです。
しかし、サーバマシンの管理者はそのマシンでは常にあなたに成りすませます。そのためサーバマシンにエージェント転送するとそのマシンの管理者がエージェント転送の接続にアクセスし、あなたのどんな秘密鍵での署名でも要求でき、つまり他のマシンにあなたとしてログインできます。これができる状況は限定されます。エージェント転送がなくなればできないですが、Pageant を使ってもサーバの管理者 (かクラッカー) がそうするのを防げません。
そのため、サーバマシンの管理者を信頼しない場合はそのマシンではエージェント転送を絶対に使ってはなりません。 (もちろん、秘密鍵をそのマシンに保存してはいけませんし、そこでパスフレーズを入力してもダメですし、どんな方法であれそこから他のマシンにログインするのもアウトです。その意味では Pageant が特別ということはありません。)
[Custom] 認証エージェント機能やエージェント転送で実際に署名する前に Pageant は確認ダイアログを表示します。
ダイアログをキャンセルするか何もせず一定時間がたつと、エージェントは署名を代行しません。サーバ側から不審なタイミングで要求があった場合にこれである程度は気づけるかもしれません。 (鍵の追加要求なども同様に確認を表示します。)
“次回から確認しない / Don't ask again”をチェックすると、その鍵では次からは確認せずに同じ対応 (許可/拒否) を行います。
また逆に、過去の確認の指定に関係なく確認を強制できます。システムトレイアイコンを右クリックし、メニューから“常に要求を確認 / Confirm Any Request”をチェックするか、コマンドラインオプション -confirm
を指定して起動します。
-confirm
なしで常に署名の確認を行う設定で起動するには、以下のコマンドを実行します:
reg add HKCU\Software\SimonTatham\PuTTY\Pageant /v ConfirmAnyRequest /t REG_DWORD /d 1
.ini ファイルの場合、putty.ini の [Pageant]
セクションに ConfirmAnyRequest=1
を指定します。
reg add HKCU\Software\SimonTatham\PuTTY\Pageant /v ConfirmDelayMs /t REG_DWORD /d MILLISECONDS
MILLISECONDS
には 0(無効) から 10,000 の範囲でミリ秒単位の時間を数字のみで指定します。 .ini ファイルの場合、putty.ini の [Pageant]
セクションに ConfirmDelayMs=MILLISECONDS
を指定します。
reg add HKCU\Software\SimonTatham\PuTTY\Pageant /v ConfirmTimeout /t REG_DWORD /d SECONDS
SECONDS
には 0(無効) から 3,600 の範囲で秒数を数字のみで指定します。 .ini ファイルの場合、putty.ini の [Pageant]
セクションに ConfirmTimeout=SECONDS
を指定します。
reg add HKCU\Software\SimonTatham\PuTTY\Pageant /v ConfirmDefaultYes /t REG_DWORD /d 1
.ini ファイルの場合、putty.ini の [Pageant]
セクションに ConfirmDefaultYes=1
を指定します。
reg query HKCU\Software\SimonTatham\PuTTY\Pageant
設定をすべて削除しデフォルトに戻すには以下のコマンドを実行します:
reg delete HKCU\Software\SimonTatham\PuTTY\Pageant /va
このマニュアルや PuTTY のツールに意見がある場合は、 Feedback page を参照してください。
翻訳についてはフィードバックから送信できます。
©1997-2025 Simon Tatham ©2015-2025 SATO Kentaro
[PuTTY custom build 0.83.ranvis-doc]