Tera Term のマクロに、パスワードを書かない3つの方法

「Tera Term マクロ 自動ログイン」で調べると、上位の解説はほぼすべて PASSWORD = '...' をマクロに直接書く形を紹介しています。 手元の検証なら問題ありませんが、運用に乗せると認証情報がファイルとして残ります。 ここでは現実的な3つの方法を、守れる範囲と守れない範囲まで含めて並べます。

なぜ平文が問題になるのか

マクロに書いたパスワードは、そのままディスク上のファイルの中身になります。次のような経路で、意図しない場所に残ります。

  • 共有フォルダに置いた .ttl が、そのまま部署内に配られる
  • ファイルサーバや端末のバックアップ、世代管理の中に残り続ける
  • 個人の Git リポジトリや、チャットの添付に混ざる
  • 担当者が退職しても、パスワード入りのファイルだけが残る

パスワード変更のたびに全ファイルを直す必要があることも、結果として「変更しない運用」を生みます。

方法1: マクロに平文で書く

いちばんよく紹介されている形です。追加のツールも設定も要りません。

HOSTADDR = '192.168.1.10'
USERNAME = 'admin'
PASSWORD = 'P@ssw0rd'      ; 平文でディスクに残る

COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
connect COMMAND

向いている場面: 一時的な検証、使い捨ての検証環境。それ以外では、認証情報の置き場所として適切ではありません。

方法2: getpassword でパスワードファイルから読む

Tera Term のマクロには、暗号化されたパスワードファイルから値を取り出す getpassword コマンドがあります。公式マニュアルには次のように記載されています。

パスワードファイル <filename> から <password name> で指定されるパスワードを読みだす。そのパスワードは暗号化されているので、それを解読してから文字列変数 <strvar> に保存する。
getpassword 'password.dat' 'server-a' password

COMMAND = '192.168.1.10:22 /ssh /2 /auth=password /user=admin'
strconcat COMMAND ' /passwd='
strconcat COMMAND password
connect COMMAND

1つのパスワードファイルに複数のパスワードを入れ、識別子で使い分けられます。

向いている場面: 追加のツールを入れたくないが、マクロに平文は書きたくない場合。

残る手間: マクロごとに getpassword を書く必要があり、接続先とパスワード識別子の対応は人が管理します。パスワードファイル自体の配布・バックアップ・権限も、別途考える必要があります。自動ログの開始も、マクロ側に logopen を書く必要があります。

方法3: TTP でマクロの外に出す

TTP は、接続情報をアプリ側の暗号化ストアに持ち、マクロには環境変数として渡します。マクロファイルの中に認証情報を書きません。

  • 保存時: AES-256 (Fernet) で暗号化。鍵はマスターパスワードから PBKDF2(480,000回反復)で導出
  • 実行時: 子プロセスの環境変数 TT_TTL_PASSWD として渡す
  • マクロ: 同梱の connect.ttl 1本を全接続先で共有
  • ログ: 接続のたびに自動生成し、そのまま記録開始
  • マスターパスワード自体は保存せず、検証用トークンのみを保持

向いている場面: 接続先が多い、担当者が複数いる、共有フォルダにマクロを置いている、作業ログを確実に残したい。

3つの方法の比較

マクロからパスワードを渡す方法の比較
項目 平文 getpassword TTP
マクロファイルに秘密が残る残る残らない残らない
追加のインストール不要不要必要
マスターパスワード——必要
接続先の一覧管理××○
接続先ごとにマクロを作る必要必要不要
ログの自動取得×自前で記述○
ポータブル(レジストリ不使用)○○○

TTP が守る範囲と、守らない範囲

暗号化ツールの説明では、できることだけを書くと誤解を生みます。TTP について、実際に守れるのは次の範囲です。

守れること

  • ディスク上の設定ファイルに、パスワードの平文が残らない
  • 共有フォルダや配布用 zip に .ttl が置かれても、そこからパスワードは取れない
  • マスターパスワードを知らない第三者は、暗号化ストアを復号できない
  • マスターパスワードは保存されないため、ストアだけをコピーしても復号できない

守れないこと

  • 端末にログインでき、マスターパスワードも知っている人の操作
  • TTP の実行中、マクロへ渡すためにメモリ上に存在するパスワード
  • 画面の覗き見、キーロガー、マルウェアなどの端末側の侵害

つまり TTP が解くのは「認証情報がファイルとして配られ、残り続ける」問題です。端末そのものの侵害への対策は、端末管理や EDR 側の責務になります。

まとめ

  • 追加ツールを入れたくない → getpassword で、少なくとも平文はやめる
  • 接続先が多く、担当者が複数いて、ログも残したい → TTP
  • どちらも、マクロに PASSWORD = '...' を書くより安全です

最終更新: 2026年11月14日 / 引用元: Tera Term MACRO Help(getpassword)