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.ttl1本を全接続先で共有 - ログ: 接続のたびに自動生成し、そのまま記録開始
- マスターパスワード自体は保存せず、検証用トークンのみを保持
向いている場面: 接続先が多い、担当者が複数いる、共有フォルダにマクロを置いている、作業ログを確実に残したい。
3つの方法の比較
| 項目 | 平文 | getpassword | TTP |
|---|---|---|---|
| マクロファイルに秘密が残る | 残る | 残らない | 残らない |
| 追加のインストール | 不要 | 不要 | 必要 |
| マスターパスワード | — | — | 必要 |
| 接続先の一覧管理 | × | × | ○ |
| 接続先ごとにマクロを作る | 必要 | 必要 | 不要 |
| ログの自動取得 | × | 自前で記述 | ○ |
| ポータブル(レジストリ不使用) | ○ | ○ | ○ |
TTP が守る範囲と、守らない範囲
暗号化ツールの説明では、できることだけを書くと誤解を生みます。TTP について、実際に守れるのは次の範囲です。
守れること
- ディスク上の設定ファイルに、パスワードの平文が残らない
- 共有フォルダや配布用 zip に
.ttlが置かれても、そこからパスワードは取れない - マスターパスワードを知らない第三者は、暗号化ストアを復号できない
- マスターパスワードは保存されないため、ストアだけをコピーしても復号できない
守れないこと
- 端末にログインでき、マスターパスワードも知っている人の操作
- TTP の実行中、マクロへ渡すためにメモリ上に存在するパスワード
- 画面の覗き見、キーロガー、マルウェアなどの端末側の侵害
つまり TTP が解くのは「認証情報がファイルとして配られ、残り続ける」問題です。端末そのものの侵害への対策は、端末管理や EDR 側の責務になります。
まとめ
- 追加ツールを入れたくない →
getpasswordで、少なくとも平文はやめる - 接続先が多く、担当者が複数いて、ログも残したい → TTP
- どちらも、マクロに
PASSWORD = '...'を書くより安全です
最終更新: 2026年11月14日 / 引用元: Tera Term MACRO Help(getpassword)