Tera Term(テラターム)のマクロ機能を利用し、SSHプロトコル+公開鍵認証方式を用いてサーバに自動ログインするマクロをご紹介致します。
今回ご紹介するのは、マクロ言語TTL(Tera Term Language)ファイルに直接「接続先ホスト情報」「接続ユーザ名」「秘密鍵のパス」を記述したバージョンになります。
マクロを実行すると初回はパスフレーズを聞いてきますが、一度ログインが成功すると次回のログインからは何の入力もなしでサーバに自動でログインします。
管理する機器が少ない場合は、機器毎にマクロファイルを作っておくと便利ですね。
SSH自動ログインマクロ(パスワード認証版)
;============================================ ; Filename : ssh_connect-15.ttl ; Description : SSH Auto login ; Author : JUNZOU ; Created : 2011/04/29 ; modified : ;============================================ ;; ユーザ名/パスワード設定 HOSTADDR = '接続先IPアドレス' USERNAME = 'ユーザ名' PASSFILE = 'C:\password.dat' KEY_FILE = 'C:\id_rsa' ;============================================ ;; ①パスワード取得 getpassword PASSFILE USERNAME PASSWORD ;; ②コマンド組立て COMMAND = HOSTADDR strconcat COMMAND ':22 /ssh /2 /auth=publickey /user=' strconcat COMMAND USERNAME strconcat COMMAND ' /passwd=' strconcat COMMAND PASSWORD strconcat COMMAND ' /keyfile=' strconcat COMMAND KEY_FILE ;; ③サーバへ接続 connect COMMAND ;; ④マクロ終了 end
マクロ内容の解説
①パスワード取得
パスワード取得のエリアでは、接続する際のユーザ名に対するパスワードを[getpassword]コマンドで指定したパスワードファイルから読み込みを行っています。
TTLコマンド[getpassword]の書式(△はスペース)
getpassword△ファイル名△パスワード識別子△文字列変数
今回パスワード識別子にはユーザ名を指定していますので、接続するユーザ名に紐づくパスワードが保存されていない場合は、パスワードを入力するダイアログボックスが表示されます。
一度ログインするとパスワードが指定したファイルに保存され、次回からパスワードの入力を求められなくなります。
こんな感じでファイルに保存されています。
=====================================
[Password]
test-user=>YV](~XKm15#O:J}?}"oLyt1VR
=====================================
②コマンド組立て
コマンド組立てエリアでは、Tera TermマクロでSSH接続(公開鍵認証方式)に必要な情報の文字列を作成しています。
変数「COMMAND」に文字を継ぎ足していく事で、接続ホスト情報にIPアドレスを指定した場合は、以下のような文字列が作成される事になります。(xxx.xxx.xxx.xxx部分はIPアドレス)
xxx.xxx.xxx.xxx:22 /ssh /2 /auth=publickey /user=#### /passwd=#### /keyfile=プライベートキー
[strconcat]コマンドは、文字列を継ぎ足す機能があります。
⇒ [strconcat]コマンドの詳細はこちらを参照してください
SSHの接続で明示的に接続ポートとSSHバージョンを指定していますが、指定しなくても接続は可能です。
最近では、セキュリティ強化で接続ポートを変更しているVPSサーバもありますので、その際は接続ポートを変更してみてください。
③サーバへ接続
サーバへ接続のエリアでは、項番①で作成した変数「COMMAND」を使用し、[connect]コマンドで対象ホストへSSH接続を行います。
④マクロ終了
自動ログインが完了するとマクロ機能を終了します。マクロ機能を停止してもセッションは維持され、通常のコンソール操作が継続して行えます。
23行目の
strconcat COMMAND USERNAME
削除しないと動かないようですよ。
m.iさん
ご指摘ありがとうございます。
早速修正いたしました。