Tera Term(テラターム)のマクロ機能を利用し、SSHプロトコル(パスワード認証 = ユーザ名+パスワードでログインを行う接続方法)でサーバに自動ログインするマクロをご紹介します。
今回ご紹介するのは、以下のような特徴のマクロになります。
①接続先ホスト情報は、あらかじめ設定している表示メニューから選択
②接続ユーザ名/パスワードは、TTLファイルに直接記述
このテラタームマクロを実行する事により、ポップアップメニューから接続先ホストを選択する事で、ユーザ名、及びパスワードを入力する必要なくサーバに自動でログインする事が可能となります。
管理対象サーバが少なく、また接続先ホスト全てに同じ管理用ユーザが設定されている場合に便利になってくるマクロです。
*TTLファイルとは
Tera Termのマクロ言語TTL(Tera Term Language)で作成されたファイルで通常拡張子が、*.ttlで保存されているファイルの事です。
SSH自動ログインマクロ
;============================================ ; Filename : ssh_connect-03.ttl ; Description : SSH Auto login ; Author : JUNZOU ; Created : 2011/03/20 ; modified : ;============================================ ;; ユーザ名/パスワード設定 USERNAME = 'ユーザ名' PASSWORD = 'パスワード' ;============================================ ;; ①接続先ホスト選択 MESSAGE = 'Please choose a connection host.'#13#13 strconcat MESSAGE ' 1 - host01(xxxxxサーバ)'#13 strconcat MESSAGE ' 2 - host02(yyyyyサーバ)'#13 strconcat MESSAGE ' 3 - host03(zzzzzサーバ)' inputbox MESSAGE 'Connection host choice' ;; 文字列を数字に変換 str2int HOSTNUMB inputstr ;; ②接続ホストIPアドレス指定 if HOSTNUMB = 1 then HOSTADDR = 'xxx.xxx.xxx.xxx' elseif HOSTNUMB = 2 then HOSTADDR = 'xxx.xxx.xxx.xxx' elseif HOSTNUMB = 3 then HOSTADDR = 'xxx.xxx.xxx.xxx' else messagebox 'The unjust number was input.' 'Input error' end endif ;; ③コマンド組立て COMMAND = HOSTADDR strconcat COMMAND ':22 /ssh /2 /auth=password /user=' strconcat COMMAND USERNAME strconcat COMMAND ' /passwd=' strconcat COMMAND PASSWORD ;; ④接続 connect COMMAND ;; ⑤マクロ終了 end
マクロ内容の解説
項番①接続先ホスト選択
接続先ホスト選択エリアでは、ホスト一覧のポップアップメニューを表示し、接続したいホストの番号を入力する事で、接続先ホストを選択します。
項番②接続ホストIPアドレス指定
接続先ホストIPアドレス指定エリアでは、項番①接続先ホスト選択で入力された番号によって、対象ホストのIPアドレスを指定しています。
ここでひとつ問題が!
入力された番号は「inputstr」に文字列として入力されています。
入力した番号によって「IPアドレス」を指定するのですが、if文の条件分岐では、数字で判定を行っています。
そのまま進めると「Type mismatch.」のマクロエラーになってしまいます。
そこで「str2int」コマンドを使用し、「str2int HOSTNUMB inputstr」の行で文字列を数字に変換を行ってからif文で条件分岐を行います。
今回あえてわかりやすいように、選択するホスト名やIPアドレスをマクロ内に直接記述しています。マクロ内の「IPアドレス」部分は各自で修正してください。
変数を使って記述すると、もっと見やすいマクロができるかもしれませんね。
項番③コマンド組立て
コマンド組立てエリアでは、TeraTermマクロでSSH接続(パスワード認証)に必要な情報の文字列を作成しています。
変数「COMMAND」に「strconcat」コマンドを使用し文字を継ぎ足していく事で接続するための文字列を作成しています。
接続先ホストにIPアドレスを設定した場合は、以下のような文字列が作成される事になります。(xxx.xxx.xxx.xxx部分は、IPアドレスです)
;;作成する文字列 xxx.xxx.xxx.xxx:22 /ssh /2 /auth=password /user=#### /passwd=####
TTLコマンド「strconcat」コマンドは、文字列を継ぎ足す機能があります。
⇒ 「strconcat」コマンドの詳細はこちらを参照してください
SSHの接続で明示的に接続ポートとSSHバージョンを指定していますが、指定しなくても接続は可能です。
以下ポート番号、SSHバージョンを指定する際の記述例です。ご参考にどうぞ。
;;コマンド例 connect 'xxx.xxx.xxx.xxx /ssh /auth=password /user=USER /passwd=PASS' connect 'xxx.xxx.xxx.xxx /ssh /1 /auth=password /user=USER /passwd=PASS' connect 'xxx.xxx.xxx.xxx /ssh /2 /auth=password /user=USER /passwd=PASS' connect 'xxx.xxx.xxx.xxx:22 /ssh /1 /auth=password /user=USER /passwd=PASS' connect 'xxx.xxx.xxx.xxx:22 /ssh /2 /auth=password /user=USER /passwd=PASS'
最近ではセキュリティ強化で接続ポートを変更しているVPSサーバ等もありますので、その際は接続ポートを変更してみてください。
項番④接続
接続のエリアでは、項番①で作成した変数(文字列)「COMMAND」を使用し、「connect」コマンドで対象ホストへSSH接続を行います。
項番⑤マクロ終了
自動ログインが完了するとマクロ機能を終了します。マクロを終了してもセッションは維持され、通常のコンソール操作が継続して行えます。
おわりに
今回ご紹介したテラタームマクロは、管理対象ホストにログインする際のユーザ名・パスワードが固定されている環境でかなり便利になってくるマクロです。もし現在ご利用の環境にマッチするのであればご利用いただければ幸いです。