pageant ログイン

以下は Teraterm と pageant を組み合わせて利用する方式を説明しています。


本手順について

ssh は、生成した秘密鍵・公開鍵のセットのうち、公開鍵をログイン対象に登録した後、秘密鍵を利用して対象にアクセスする方式です。
Pageant は、秘密鍵の扱いを楽にしてくれるプログラムです。

概要としては、次の図のとおりです。

ssh の公開鍵登録と pageant 管理
ssh の公開鍵登録と pageant 管理

ええ、かなり分かりにくいですね。
ここでは主に、Putty で鍵のセットを生成するところから、Linux にどう登録し、どうアクセスするのか、というところまでを記載しています。

オレンジ系統は、端末で動いている Pageant が秘密鍵/公開鍵を管理していることを表しています。
公開鍵は、Teraterm でログインしたいサーバに置くファイルです。事前に置いておきましょう。

Teraterm が Pageant を利用する場合、Teraterm 起動時に次の指定を行います。
  1. 公開鍵を置いたサーバを指定すること。
  2. Pageant を利用すること
すると、Pageant は該当の秘密鍵を渡すので、毎回パスワード入力や秘密鍵の指定を行う必要なく、アクセスできるようになります。

ダウンロードするファイル

さて、次の表は、本手順で必要となるファイルの一覧です。
不足するようであれば、ダウンロードしておいてください。
ダウンロード先
NoダウンロードファイルURL用途備考
1pageant.exePuTTY 関連ファイル秘密鍵の運用
2puttygen.exe.ppk 形式での公開鍵/秘密鍵を生成必要な場合のみ
上記ソフトウェアは PuTTY もしくは WinSCP にも同梱されています。
すでにインストールされている場合は、それぞれのソフトのインストール先を確認して読み替えてください。

Tera Term はすでにセットアップされているものとして扱っています。
必要であれば Tera Term の導入 を参照してください。

本手順でのファイル格納先

本手順で利用する各ファイルの格納先です。
環境に合わせて読み替えてください。
利用ファイル一覧
対象ファイル格納先備考
pageant.exe"C:\Users\Windows\Downloads\pageant\64bit\pageant.exe"64bit版をダウンロードしています。
puttygen.exe"C:\Users\Windows\Downloads\pageant\64bit\puttygen.exe"64bit版をダウンロードしています。
公開鍵"C:\Users\Windows\Downloads\pageant\key\id_rsa_ppk.pub"puttygen.exe で生成します。
秘密鍵"C:\Users\Windows\Downloads\pageant\key\id_rsa.ppk"puttygen.exe で生成します。

ログイン対象 SSH サーバ

Linux (にインストールされた OpenSSH サーバ)へのログインを想定しています。
鍵は、以降の手順で生成し、配置します。

pageant

pageant とは

pageant とは .ppk (PuTTY Private Key Files) 形式の秘密鍵/公開鍵方式で通信するための鍵を管理するソフトです。

作成した .ppk 形式の秘密鍵をクライアント側で保持し、併せて作成した公開鍵をサーバ側へ登録することで、クライアントは OpenSSH サーバへのログイン時にパスフレーズなしでログインできるようになります。

と謳いつつ、実際には pageant.exe へ秘密鍵を登録するときに入力したパスフレーズが利用されます。
パスフレーズを入力せずに作成した秘密鍵ではパスフレーズの入力は不要になりますが、パスフレーズを利用した方がセキュリティ的に強固になります。

pageant の行うこと

pageant は、以下の機能を備えています。
  • 秘密鍵/公開鍵を所持する。
  • 手続きに必要なデータ一式をそろえた要求があれば所持している秘密鍵で署名して返す。
ということで pageant が秘密鍵の運用を担います。
こうすることで PuTTY 等のクライアントが秘密鍵を持たずに、かつ、ログイン事のパスワード入力を省力化 (省略ではない) したうえで暗号化した通信を行えます。

SSH1 と SSH2 とで署名する対象などの方式が違うようですが、内部でうまく処理してくれているようです。

pageant の行わないこと

通信自体は別なソフトを利用する必要があります。
クライアントはサーバとやりとりするための共通鍵を pageant の署名で入手できるので、通信自体は問題なく暗号化して行えます。

また、署名を要求するクライアントの選別はしません。
なので Tera Term が pageant を利用しても問題ありませんね。

pageant セットアップ

ダウンロード

次の URL へアクセスしてください。
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

「Alternative binary files」の中から pageant.exe を任意のフォルダへダウンロードします。

Alternative binary files の pageant
Alternative binary files の pageant

実のところ、ダウンロードした pageant.exe はそのまま実行することもできるため、現状でインストールしたともいえます。
pageant.exe ファイルを移動すれば、そこがインストール先です。

32-bit もしくは 64-bit のどちらの OS を利用しているかでダウンロードするものを選択します。

自身の利用している CPU がどちらなのか不明な場合は 32-bit を利用すると安全*1です。
PuTTY をセットアップしても pageant が同梱されているようです*2

インストール

前述のとおり pageant.exe ファイルを置いているフォルダがインストール先フォルダです。

移動したい場合は、エクスプローラーを起動して pageant.exe を保存したフォルダを開きます。
ダウンロードした pageant.exe を、実行したいフォルダへ移動します。

本手順では C:\Users\Windows\Downloads\pageant\64bit\pageant.exe としています。

*1 : 特に、Tera Term マクロから exec コマンドで 64 bit 版 pageant を起動しようとすると、一度 32 bit で起動させようとした後 OS が 64 bit で再起動をかけてしまい、意図した動作をしてくれない懸念があります。

*2 : この手順では pageant 単体のセットアップを意図していますので PuTTY のセットアップは記載しません。

puttygen.exe での .ppk (PuTTY Private Key Files) 作成

id_rsa.ppk 形式の鍵ファイルを作成します。

作成する方法は、純正の鍵生成ソフト puttygen.exe を利用する方法と、Tera Term 等で作成した id_rsa を .ppk 形式に変換する方法があります。
本手順では puttygen.exe を利用して鍵生成する方法を説明します。

puttygen.exe のダウンロード

前述した URL https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html の「Alternative binary files」の中から puttygen.exe を任意のフォルダへダウンロードします。

puttygen.exe のインストール

pageant.exe ファイルと同じく puttygen.exe を置いているフォルダがインストール先フォルダです。

移動したい場合は、エクスプローラーを起動して puttygen.ex を保存したフォルダを開きます。
ダウンロードした pageant.exe を、実行したいフォルダへ移動します。

本手順では鍵生成のためだけに利用しているので、ダウンロード場所としています。

puttygen.exe の起動

ダウンロードした puttygen.exe をダブルクリックして起動します。

起動すると、以下の画面が表示されます。

PuTTY Key Generator 起動
PuTTY Key Generator 起動

puttygen.exe での鍵生成

全画面の Actions から「Generate」ボタンをクリックします。

以下の画面が表示されます。

PuTTY Key Generator 鍵生成
PuTTY Key Generator 鍵生成

マウスの動きからデータを生成しているようなので、説明書きの通りマウスをぐりぐりぐるぐるゴリゴリ動かします。

Key passphrase 入力

マウスを動かして、必要なランダムデータが集まると以下の画面*3が表示されます。

PuTTY Key Generator パスフレーズ入力
PuTTY Key Generator パスフレーズ入力

入力項目は、以下の通りです。
入力項目一覧
入力項目入力内容備考
Key commentコメントを入力するデフォルトあり
Key passphrase秘密鍵を利用する際のパスフレーズを入力する
Confirm PassphraseKey passphrase の再入力を行う

その他は ssh2 を使う限り、デフォルトで問題ありません。

生成した鍵の保存

マウスを動かして生成した鍵を、それぞれ保存します。
公開鍵
「Actions」の「Save public key」ボタンをクリックします。

任意のフォルダへ保存してください。
本手順では C:\Users\Windows\Downloads\pageant\key\id_rsa_ppk.pub としています。
秘密鍵
「Actions」の「Save private key」ボタンをクリックします。

任意のフォルダへ保存してください。
本手順では C:\Users\Windows\Downloads\pageant\key\id_rsa.ppk としています。

なお、自身が利用する秘密鍵は、他人の手に渡った時点で危険です。
適切に管理する必要があります。

*3 : 以下の画面というには加工されていて、実際に表示されるのは入力項目を入力する前の画面なのです

秘密鍵 (pageant への登録)

pageant.exe を起動します。

ダブルクリックでの起動 (手動)

pageant.exe を置いたフォルダを開いてください。
手順通りにダウンロードしたのであれば、C:\Users\Windows\Downloads\pageant\64bit\ にあるはずです。

pageant.exe をダブルクリック等で起動すると、以下の画面が表示されます。

Pageant Key List 起動
Pageant Key List 起動

上記画面で「Add Key」をクリックすると、秘密鍵を選択するダイアログボックスが表示されます。
秘密鍵 C:\Users\Windows\Downloads\pageant\key\id_rsa.ppk を入力して、「開く(O)」をクリックしてください。
以下のパスフレーズ入力画面が表示されます。

Pageant Key List パスフレーズ入力
Pageant Key List パスフレーズ入力

秘密鍵作成時に入力したパスフレーズを、ここで入力してください。
ちなみに、パスフレーズを入力していなかった場合は、入力画面は表示されません。

正しくパスフレーズを入力し終えたら「OK」ボタンをクリックします。

Pageant Key List 登録完了
Pageant Key List 登録完了

元の画面に、登録した秘密鍵が表示されることを確認して Close ボタンをクリックします。
pageant.exe は終了せず、タスクトレイに常駐します。

なお、タスクトレイに常駐している pageant.exe を終了させると pageant.exe が利用できなくなります。

コマンドラインでの起動

ここでは、上述したダブルクリックではなく、コマンドでの pageant.exe 起動を記載します。

Win キーを押して、cmd と入力するとコマンドプロンプトを起動できます。
コマンドプロンプトへ以下のように入力し pageant.exe を起動します。
"C:\Users\Windows\Downloads\pageant\64bit\pageant.exe" "C:\Users\Windows\Downloads\pageant\key\id_rsa.ppk"

起動後、指定した秘密鍵にパスフレーズが必要な場合は、入力ダイアログボックスが表示されます。
秘密鍵作成時に入力したパスフレーズを、ここで入力してください。

なお、パス (PATH) は、自身の環境に合わせて読み替えてください。

Tera Term マクロでの起動

ここでは、Tera Term マクロでの pageant.exe 起動を記述します。
以下のように Tera Term マクロで実行可能です。

想定ファイル名: pageant.ttl
・pageant.exe 起動サンプル
; pageant starter

basedir_p = "C:\Users\Windows\Downloads\pageant\64bit"
basedir_r = "C:\Users\Windows\Downloads\pageant\key"

pageant = "pageant.exe"
rsappk  = "id_rsa.ppk"

makepath pageant_path basedir_p pageant
makepath rsappk_path  basedir_r rsappk

sprintf2 cmd '"%s" "%s"' pageant_path rsappk_path
exec cmd
利用する場合は、環境に合わせて修正してください。

マクロでも、起動時に指定した秘密鍵でパスフレーズが必要な場合は、入力ダイアログボックスが表示されます。
秘密鍵作成時に入力したパスフレーズを入力してください。

公開鍵 (OpenSSH サーバへの登録)

ファイルのアップロード

本手順では対象サーバへコマンドによる処理を行うため、通常の手順でTera Term でログインします。

ログイン後、作成した公開鍵を Tera Term 画面にドラッグ&ドロップ → SCP でログインユーザのホームディレクトリにアップロードします。

id_rsa_ppk SCP アップロード
id_rsa_ppk SCP アップロード

ドラッグ&ドロップした際に表示される画面で、このまま OK ボタンをクリックすると、ホームディレクトリにファイルが SCP されます。

公開鍵の登録

アップロードした鍵は ~/.ssh/authorized_keys に追記 (ない場合は作成) する必要があります。
puttygen.exe で作成した公開鍵と、Tera Term で作成した公開鍵では、微妙に登録方法が異なります。
puttygen.exe を利用した場合
アップロードした公開鍵を ssh-keygen コマンドで変換して .ssh/authorized_keys に登録します。
$ cd
$ [ -d .ssh ] || mkdir .ssh
$ chmod 700 .ssh
$ ssh-keygen -i -f id_rsa_ppk.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

なお、登録した鍵の最後 (==の後) に、どの秘密鍵とペアなのかコメントを入れておくと、後で公開鍵を削除したい場合に悩まずに済みます。
$ vi .ssh/authorized_keys
( Shift + A → Space → コメント記入 )
Esc → :x

また、登録を終えた公開鍵は、不要なので消しておきます。
$ rm id_rsa_ppk.pub

接続

Tera Term

Tera Term 起動
Tera Term を起動して表示される「新しい接続」で、アクセスしたいホスト (公開鍵を登録したホスト) を入力して「OK」ボタンをクリックします。

new connection
new connection

ユーザ名 & 秘密鍵利用
ユーザ名を入力します。
そのまま同じ画面で Authentication methods から「Pageantを使う」を選択します。

SSHAuth pageant 利用
SSHAuth pageant 利用

上記を終えて「OK」ボタンをクリックします。

これでタスクトレイに常駐している pageant.exe を利用してログインできます。

もう一度書きます。
  1. ユーザ名入力
  2. Authentication methods から「Pageantを使う」を選択
  3. 「OK」ボタンをクリック
...です。

ログインできない場合は、pageant.exe がタスクトレイに常駐していることを確認してみてください。

Tera Term コマンドライン

毎回入力するよりコマンドラインで実行したい、という場合のログイン方法です。
コマンドプロンプトからログインするには、以下のパラメータを指定します。
> ttermpro.exe example.jp:22 /ssh2 /auth=pageant /user=username
各パラメータは、適切に読み替えてください。

Tera Term マクロ

次の、シンプルなマクロでログインすることが可能です。
hostname = 'example.jp'
portnumb = 22
username = 'username'

sprintf2 msg "%s:%d /ssh2 /auth=pageant /user=%s" hostname portnumb username
connect msg
pageant.exe が起動している限り、ログイン毎のパスフレーズ入力は不要です。

なお pageant.exe をマクロで起動してそのままログインするためには pageante.exe 起動後のパスフレーズ入力と同期する必要があるため、技術的に難しい状況でした。
もちろん、ダイアログボックス (yesnobox) を表示させておいて、パスフレーズ入力したら OK ボタンをクリックするとか、パスフレーズ不要の秘密鍵とペアとなる公開鍵を利用するとかであればすんなり通ったのですが、ちょっとスマートとは言い難いため公開を差し控えます。

検証環境

アクセス元

BTO PC - Windows 10 Pro (バージョン 1903 OS ビルド 18362.239)
Tera Term バージョン 4.103

アクセス先

Raspberry Pi - Raspbian 9 (Debian 9 - Stretch)