【TeraTermマクロ】パスワード暗号化で平文を防ぐ自動ログインの仕方

【TeraTermマクロ】パスワード暗号化で平文を防ぐ自動ログインの仕方

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:3,414

Tera TermマクロでSSH自動ログインを行う際、平文のパスワードをソースコードに記述していませんか?本記事では、getpasswordコマンドを使用してパスワードを暗号化保存し、平文を記述することなく自動ログインを実現する手順を初心者向けにわかりやすく解説します。

ITエンジニアにお勧めの本 ↗

おすすめ

エンジニアが知っておきたい思考の整理術 複雑な情報を【理解する】【伝える】テクニック

難易度
実用性
図解

思考の整理というテーマを、実務ですぐに使える具体的な「技術」として落とし込んだ一冊です。

ベストセラー

世界一流エンジニアの思考法

難易度
実用性
思考法

技術スキル以上に大切な「考え方」をアップデートできる。世界基準の効率的な仕事術が学べます。

文系社会人のためのIT資格の歩き方: 文系のあなたに最適な道をご提案します (YKcreate kiki)

難易度
実用性
キャリア度

ロードマップが非常に明確。キャリアプランを見据えた、無駄のない学習順序を提案してくれます。

エンジニアを説明上手にする本 相手に応じた技術情報や知識の伝え方

難易度
実用性
コミュ力

「伝える技術」もエンジニアの重要なスキル。相手の視点に立った、具体的な説明のコツが満載です。

技術広報入門 ー テックブログから始めるエンジニアカルチャーのつくり方

難易度
実用性
独自性

テックブログを入口にエンジニア組織の文化をどう設計し、育てていくかという実践論が学べます。

Tera Termのマクロ機能を使ってSSHSSH [エスエスエイチ]Secure Shell。暗号化されたリモート接続プロトコルの自動ログインを行いたいけれど、マクロファイルのソースコードにパスワードをそのまま(平文で)書き込むのはセキュリティ上不安、と感じていませんか?

「業務効率化のために自動化したいけれど、万が一マクロファイルが流出したときのことを考えると怖い」「平文パスワードをソースに残さない方法が知りたい」といったお悩みを抱えている方は多いでしょう。

この記事を読むことで、Tera Termの標準機能である getpassword コマンドを使ったパスワード暗号化ファイルの仕組みを理解し、平文パスワードをマクロソースに記述せずにSSH自動ログインを行うマクロを作成できるようになります。

確認した環境

本記事の手順およびサンプルコードは、以下の環境で動作を確認しています。

  • OSOS [オーエス]Operating System。基本ソフトウェア: Windows 11 (64bit)
  • ターミナルエミュレータ: Tera Term (バージョン 5.3) ※本記事ではTera Term 5.3で検証しています。Tera Termのバージョン(例えば最新の5.7.0など)によって利用できるマクロコマンドや仕様が異なる場合があります。特に getpassword2 は5.3以降の機能です。

TeraTermマクロのパスワード管理と暗号化の必要性

Tera Termのマクロによる自動ログインは日々の運用を効率化する非常に便利な機能ですが、実装方法を誤ると重大なセキュリティリスクを招くことになります。ここでは、パスワード管理における危険性と、それを回避するための仕組みについて解説します。

平文パスワードをマクロに直書きする危険性

従来の基本的な自動ログインマクロでは、以下のように connect コマンドや sendln コマンドにパスワードをそのまま文字列として記述していました。

; 危険な記述例(平文)
username = "root"
password = "MySecretPassword123"
connect '192.168.1.10:22 /ssh /2 /auth=password /user=' + username + ' /passwd=' + password

この方法には、以下のようなセキュリティリスクが存在します。

  • ファイル流出時のリスク: マクロファイル(.ttl)がPCの紛失や誤送信、共有フォルダの設定ミスなどによって第三者の目に触れた場合、パスワードがそのまま漏洩します。
  • 暗号化しても残るセキュリティリスク: .ttl ファイルを閲覧できるだけではパスワードそのものを直接確認できないように対策できます。ただし、暗号化ファイルへのアクセス権や、実行中のPCへの不正アクセスなど、別の経路による漏洩リスクは残る点に注意が必要です。

このような平文パスワードをマクロに記述するリスクを低減する方法の一つとして、パスワードを暗号化してファイルに保存し、マクロ実行時に読み出す方法があります。

getpasswordコマンドによるパスワード暗号化の仕組み

Tera Termのマクロ(TTL)には、パスワードを暗号化してファイルに保存し、次回以降はそこから安全に読み出すことができる getpassword コマンドが用意されています。

このコマンドを使用すると、パスワードファイルが存在しない場合や、指定したパスワード識別子が保存されていない場合にパスワード入力用のダイアログが表示され、入力した内容が専用のファイル(例: password.dat)に暗号化されて保存されます。保存済みの場合は暗号化ファイルから自動的に復号されて変数に格納されるため、マクロのソースコード上に平文のパスワードを一切記述せずに自動ログインを実現できます。

TeraTermマクロでパスワード暗号化を設定する手順

それでは実際に、getpassword コマンドを使って平文パスワードをソースに残さない自動ログインマクロを作成する手順を解説します。

1. getpasswordコマンドを記述する

実際の自動ログインマクロ内で getpassword コマンドを使用し、暗号化ファイル名とパスワードの識別子を指定します。

; パスワード暗号化保存用のファイル名
PASSFILE = 'password.dat'
; 保存するパスワードの識別子(ユーザー名など)
PASSKEY = 'ec2-user'
; パスワードを取得(初回はダイアログ表示、2回目以降はファイルから自動読み込み)
getpassword PASSFILE PASSKEY PASS
; パスワードの保存に失敗した場合のエラーハンドリング
if result = 0 then
messagebox 'パスワードファイルへの保存に失敗しました。' 'エラー'
end
endif

この記述により、実行時に PASS 変数にパスワードが格納されます。ソースコードに平文パスワードを書く必要はありません。

2. SSH接続コマンドと組み合わせる

次に、取得したパスワード変数を使ってSSH接続コマンドを組み立てます。変数と文字列を連結(strconcat)して、最終的な接続コマンドを作成します。

【実践】パスワード暗号化を組み込んだTeraTermマクロのサンプルコード

これまでの手順をまとめた、平文パスワードをソースに記述しないSSH自動ログインマクロの完全なサンプルコードを提示します。社内の環境に合わせてホスト名やユーザー名などを書き換えて使用してください。

; ==================================================
; Tera Term 暗号化自動ログインマクロ
; ==================================================
; 接続設定の変数定義
HOST = '192.168.1.50:22'
USER = 'ec2-user'
; パスワードを保存する暗号化ファイル
PASSFILE = 'password.dat'
; ==================================================
; 1. パスワードの取得(暗号化ファイルから読み込み)
; 初回実行時やファイルがない場合は入力ダイアログが表示されます
; ==================================================
getpassword PASSFILE USER PASS
if result = 0 then
messagebox 'パスワードファイルへの保存に失敗しました。' 'エラー'
end
endif
; ==================================================
; 2. SSH接続コマンドの構築と実行
; ==================================================
COMMAND = HOST
strconcat COMMAND ' /ssh /2 /auth=password /user='
strconcat COMMAND USER
strconcat COMMAND ' /passwd='
strconcat COMMAND PASS
; Tera Termで接続
connect COMMAND
; ==================================================
; 3. 接続後の処理(必要に応じて追加)
; ==================================================
; wait '$'
; sendln 'uptime'
end

このマクロを実行することで、ソースコードに平文パスワードを書くことなく、SSHサーバーへ自動ログインすることができます。

パスワード暗号化マクロ運用時の注意点とトラブルシューティング

自動ログインマクロをより適切に運用するために、知っておくべき注意点と、よくあるトラブルの対処法を解説します。

暗号化ファイルの有効範囲とアクセス管理

getpassword コマンドを使用すると、パスワードを暗号化してパスワードファイルに保存できます。 ただし、暗号化ファイル自体のアクセス管理は自動的には行われません。パスワードファイルを第三者が取得できないよう、保管場所やファイルのアクセス権にも注意が必要です。具体的には、共有フォルダに置かない、GitGit [ギット]ソースコードの変更履歴を管理する分散型バージョン管理システムなどのリポジトリにコミットしない、などの対策が重要です。また、マクロ内で password.dat のように相対パスを指定した場合は、実行環境のカレントディレクトリを基準にファイルが作成されるため、必要に応じて絶対パスを使用するなど保存場所を明確に管理するとよいでしょう。

Tera Term 5.3以降の getpassword2 コマンド

Tera Term 5.3以降では、AES-256-CTRCTR [シーティーアール]Click Through Rate。クリック率。広告やリンクが表示された回数に対してクリックされた割合を使用してパスワードを暗号化する getpassword2 / setpassword2 コマンドが追加されています。 getpassword2 では暗号化に使用する文字列を指定できるため、従来の getpassword とは異なる保護方法を利用できます。ただし、暗号化に使用する文字列自体をマクロに平文で記述する場合は、マクロファイルと暗号化されたパスワードファイルの両方を第三者に取得されると、パスワードを復号される可能性があります。そのため、暗号化に使用する文字列も適切に管理する必要があります。

接続エラー時の確認ポイント

暗号化マクロを実行した際に接続エラーや認証失敗が発生する場合は、以下のポイントを確認してください。

  • パスワードの入力ミス: 初回ダイアログでパスワードを間違えて入力した可能性があります。その場合は、生成された暗号化ファイル(例: password.dat)を削除するか、delpassword 'password.dat' 'ec2-user' のように特定の識別子だけを削除するマクロを実行してから再入力してください。
  • ログインパスワードの変更: 接続先サーバー側でログインパスワードを変更した場合は、古い暗号化パスワードを削除または delpassword で削除してから、新しいパスワードを登録します。
  • 認証方式の不一致: サーバー側でパスワード認証が無効化されていないか、SSHの設定(/auth=password など)が正しいかを確認します。

まとめ

本記事では、Tera Termマクロで平文パスワードをソースに記述せずにSSH自動ログインを行うための手法について解説しました。

  • ソースコードへの平文パスワードの直書きは、ファイル流出時のセキュリティリスクが大きいため避けるべきです。
  • getpassword コマンドを使用することで、マクロ内に平文を記述せず、別ファイルに暗号化して保存・運用できます。
  • 初回実行時や、指定したパスワードが暗号化ファイルに保存されていない場合にダイアログでパスワードを入力し、保存済みの場合は暗号化ファイルから自動的に読み込まれるため、日々の運用も非常にスムーズです。
  • Tera Term 5.3以降をお使いの場合は、AES-256-CTRを利用できる getpassword2 コマンドの利用も検討してください。

パスワードファイルの適切なアクセス管理などを徹底し、効率的なインフラ管理を実現しましょう。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る →

ITエンジニアにお勧めの本 ↗

おすすめ

エンジニアが知っておきたい思考の整理術 複雑な情報を【理解する】【伝える】テクニック

難易度
実用性
図解

思考の整理というテーマを、実務ですぐに使える具体的な「技術」として落とし込んだ一冊です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top