2019/06/11(火)Tera Term ログイン自動化での注意点
2019/06/15 05:18
危険な使い方について、なぜ危険なのかを解説しつつ、どういうタイミングで使えばいいのかを解説します。
結論から
パスワードの入力は、横着せずに毎回入力しましょう。それが、たぶん一番安全です。
きっと一番なのは使わないことなんでしょうが…このサイトの意味がないですし、そもそも便利なツールでも「使いどころに注意してね」というスタンスなので、自己責任でお願いいたします。
要注意
使いどころに注意を要するものです。/passwd オプション
コマンドラインでも、マクロの connect でも使える、オートログインに必須なスゴイやつですが、じつはオプション指定というのは OS 側で平文で管理されてます。Tera Term の利用時、パスワードは毎回手で入力することが望ましいです。
たとえば Tera Term のログインマクロでホストへログインしたあと、コマンドプロンプトで以下を実行してみましょう。
command prompto> wmic process where "name = \"ttermpro.exe\"" get name,commandlineあなたの環境では、どう表示されたでしょうか。
私の環境(Windows 10 Pro)では、Tera Term で接続しているホスト名、ポート番号、アカウント、パスワード、全部表示されてしまいました。
一応、回避策はあるようです。
connect コマンドに対する既存の接続オプションの変数を connect_option と仮定して、次のように 2 ステップ踏むようにすると、Windows 側に表示されなくなりました。
sprintf2 connect_option "%s:port /auth=password /user=%s /passwd=%s" hostname username password ; launch Tera Term connect '/DS' ; connect to server connect connect_option
ただ、サンプルのログインマクロでは、このような段階を踏んだアクセス方法は記載されておらず、利用している人は少ないのではないかと個人的に思っています。
これくらい軽い動作でアカウント情報を出力できるなら、AD とかに仕込めたらアカウント抽出が捗りますね。
Tera Term ログインからでさえ省力化するなら、アクセス管理サーバがあってもきっと公開鍵を大量に配布して ssh もパスワードなしでログインしていることでしょう(憶測)。
そうでなくても、passwordbox コマンドでパスワードを暗号化したファイルをローカルに置いているに違いない!(妄想)
冗談はともかく、オプションを表示させるのは Windows 側の仕様なので、適切に回避するしかなさそうです。
passwordbox コマンド
こちらもオートログインでは非常に重要なコマンドですね。入力されたパスワードを暗号化して、ファイルへ保存してくれます。
もちろん、次回の利用では復号化を行ってくれます。
passwordbox で作成したファイルのパスは、ご存知ですか?
また、それをテキストエディタで参照することができるのもご存知でしょうか。
ここで唐突に、某所で公開されていたソースコードを貼り付けます。
wfile = 'パスワード解析結果.txt' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ファイル定義 :FileInput inputbox 'パスワード DAT のパスを入力してください。' 'Path input' pwdat = inputstr strlen pwdat if result = 0 then goto FileInput endif ; ファイルの存在確認 filesearch pwdat if result = 0 then sprintf2 msg 'ファイル %s がありません\n終了します' pwdat strspecial msg messagebox msg 'Error' exit endif ; Passowrd file Open (ファイルハンドラ:fhPWDAT 読み取り専用) fileopen fhPWDAT pwdat 0 1 ; Write file open (ファイルハンドラ:fhWrDat) fileopen fhWrDat wfile 0 0 ; 上から順に変数へ格納 while 1 filereadln fhPWDAT line if result = 1 then break endif ;; 解析開始 strscan line '=' if result = 0 then ; [定義部分] strscan line '[' if result then pLpw = line strtrim pLpw '[' strscan pLpw ']' if result then strtrim pLpw ']' endif endif filewriteln fhWrDat line else ; パスワード識別子 strsplit line '=' PassName = groupmatchstr1 getpassword pwdat PassName pLpw sprintf2 msg '%s=%s' PassName pLpw filewriteln fhWrDat msg endif endwhile ; File Clese fileclose fhWrDat fileclose fhPWDAT上記のソースをコピペ後、「pw解除.ttl」等の適当な名前で、保存します。
ソースをオープンしているので、妙なコードが書かれていないか、ご自身で確認してください。
pw解除.ttl を実行しましょう。
先ほど参照した passwordbox で作成したファイル 「.dat」 を、フルパスで指定してあげます。
すると、マクロが置いてあるフォルダに「パスワード解析結果.txt」というテキストファイルが作成されるので、開きます。
パスワードが復号化できたことを確認します。
…つまり、いくら暗号化されているとはいえ、ファイルが流出してしまえば解読は1瞬です。
メモにアカウントを書いているのと、あんまり変わりません。
passwordbox を使う場合は、くれぐれもファイルの流出にご注意ください。
対策としては、暗号化パスワードのファイルを暗号化アーカイブで保存しておくことでしょうか。
必要に応じて解凍→削除を行えば、それなりにパスワードを保護できるでしょう。
コマンドラインでファイルを暗号化できるアーカイバを導入して exec で指定することも一考の余地はありそうです。
なお、このブログは Tera Term がメインなので、他のターミナルエミュレータのことは分かりません。
繰り返しますが、スタンスとしては「使いどころに注意してね」と。
TeraTerm マクロの使い方
2021/05/18 05:04
TeraTerm マクロの使い方
マクロとは、操作を自動化するための技術の総称です。そのため、Tera Term マクロというと、Tera Term の操作を自動化するための技術、という意味になります。
マクロファイルとは、プログラムに行わせたいコマンドをそのままテキストファイルに記述したものです。
そのマクロを Tera Term に読み込ませる方法ですが、割と種類があります。
複数ホストへの同時コマンド実行(ブロードキャスト)
2021/05/18 20:10
ブロードキャスト機能
Tera Term というか、サーバの設定変更をしていると、複数台をまとめて設定変更したいケースが出てきます。例えば、負荷分散している apache サーバに、それぞれ同じ静的コンテンツを格納したいとか。
そんなとき、1台ずつアクセスして、ファイルを送って、解凍して、確認して……とやっていると、最初は良くても何回か繰り返すうちにダレが出てきて、ミスを誘発するんですよね。
コマンドラインをテキストに落としておいて、サーバ毎にコピペする方法も良かったんですけど、コピペミスを劇的に減らしてくれる機能がありました。
(少なくとも私は減りました)
複数の Tera Term へ、まとめてコマンドを同時送信してくれる機能が、ブロードキャスト機能です。
ブロードキャストの使い方
どの端末でも良いのですが、メニューから「コントロール」→「ブロードキャストコマンド」を選択します。同時送信したい Tera Term 端末を選択して、送信したいコマンドを入力します。
この時、「リアルタイム」にチェックが入っていると、選択した端末に文字が送られているんですよね。
Enter を押せば、そのまま Enter が有効と。
「リアルタイム」にチェックがない場合は送信ボタンをクリックするまでは送信されないので、入力ミスをチェックできるようにもなります。
また、個別に端末ウィンドウを選択すれば、選択した端末だけにコマンドを送ることも可能です。
この機能を使うときには限らないのですが、どの端末にどんなコマンドを送っているか、きちんと把握して事故の無いようにお願いします。
ログ自動取得設定を行う(デフォルト設定変更)
2021/05/21 05:01
ログ自動取得設定を行う(デフォルト設定変更)
ログは、ホストにアクセスした際に自動で取得を開始させることができます。やり方は、大雑把に 3 種類あります。
- ログ自動取得設定を行う(デフォルト設定変更)
- ログの自動取得(コマンドライン)
- マクロで指定する
自動取得設定
まず、Tera Term のメニューから設定する方法です。これは TERATERM.ini の設定内容を書き換えます。
(TERATERM.ini の詳細は teraterm.ini を参照してください)
まず、設定画面を呼び出します。
メニューから「設定(S)」→「その他の設定(D)」を選択します。
「標準ログファイル名(strftimeフォーマット可)(F)」に、自動で保存させたいファイル名を指定します。
また、忘れずに「自動的にログ採取を開始する(U)」にチェックを入れます。
※ 「標準のログ保存先フォルダ(S)」で、保存先を指定可能です。
設定変更した内容を保存するため、メニューから「設定(S)」→「設定の保存(S)」を選択します。
次回から自動でログ保存を行わせるために、TERATERM.ini のまま「保存(S)」をクリックします。
※ 別名で保存して Tera Term 起動時のオプションに設定ファイルを指定することで、個別に設定ファイルを読み込むことも可能です。
設定オプション
オプションは、次の通りです。対象の項目
オプションは、デフォルトで次の通りにチェックが付けられています。チェックの意味
それぞれ、チェックした場合の挙動は次の通りです。タイムスタンプの取得方法は、以下の選択肢があります。
選択肢 | 機能 |
---|---|
ローカルタイム | 端末の現在時刻を、ロケーションに応じて利用します。日本なら JST です。 |
UTC | 端末の現在時刻を UTC に変換して利用します。 |
経過時間(Logging) | ログ取得開始時点からの経過時間を利用します。 |
経過時間(Connection) | 接続開始時点からの経過時間を利用します。 |
ログのローテート
長期間のログ取得を行いたいケース等では、ログが肥大化して不都合が発生することがあります。そんな時に、ローテーションを行います。
対象の項目
デフォルトオプションは、チェックされていません。指定の意味
チェックを入れて、次の内容で設定を行うことができます。項目 | 設定内容 |
---|---|
サイズ(i) | ローテーションを発生させるログのサイズを設定します。 1文字がおよそ 1byte *1です。 |
世代(R) | 過去何世代まで保存するかを設定します。例えば5世代に設定した場合、6世代目となった過去ログは削除されます。 |
strftime フォーマット
ログ名に指定可能な strftime フォーマットは、以下の通りです。例えば、[アクセスしたホスト名]-[YYYY][MM][DD].log の形式にしたい場合は、&h-%Y%m%d.log と記入します。
フォーマットの詳細は strftime フォーマット で記載します。
書式 | 意味 |
---|---|
&h | ホスト名。未接続の場合は空。 |
&p | TCP ポート番号。未接続の場合は空。TCP 接続でないときも空。 |
&u | ログオン中のユーザ名。 |
%a | 曜日の省略形。 |
%A | 曜日の正式名。 |
%b | 月の省略形。 |
%B | 月の正式名。 |
%c | ロケールに対応する日付と時刻の表現。 |
%d | 10 進数で表す月の日付 (01 ~ 31)。 |
%H | 24 時間表記の時間 (00 ~ 23)。 |
%I | 12 時間表記の時間 (01 ~ 12)。 |
%j | 10 進数で表す年初からの日数 (001 ~ 366)。 |
%m | 10 進数で表す月 (01 ~ 12)。 |
%M | 10 進数で表す分 (00 ~ 59)。 |
%p | 現在のロケールの午前/午後。 |
%S | 10 進数で表す秒 (00 ~ 59)。 |
%U | 10 進数で表す週の通し番号。日曜日を週の最初の日とする (00 ~ 53)。 |
%w | 10 進数で表す曜日 (0 ~ 6、日曜日が 0)。 |
%W | 10 進数で表す週の通し番号。月曜日を週の最初の日とする (00 ~ 53)。 |
%x | 現在のロケールの日付表現。 |
%X | 現在のロケールの時刻表現。 |
%y | 10 進数で表す西暦の下 2 桁 (00 ~ 99)。 |
%Y | 10 進数で表す 4 桁の西暦。 |
%z, %Z | レジストリの設定に応じて、タイム ゾーンの名前または省略形を指定します。 タイム ゾーンが不明な場合は指定しません。 |
%% | パーセント記号。 |