SSHログイン用のTeraTermマクロ作成
TeraTermを利用してパブリッククラウド上のサーバにSSH接続する際、
セキュリティの観点から公開鍵認証方式を採用しているのですが、
接続する度にIPや鍵が格納されてるパスを入力するのが面倒なので
TeraTermMacroを作成してログインの手間を省こうと思います。
目次
1.使い方
2.パスワード認証ログイン
3.公開鍵認証ログイン
4.サーバを選択してログイン
5.踏み台経由してサーバログイン
1.使い方
TeraTermマクロは、拡張子がttlのファイルに記述されている実行内容を、そのttlファイルを実行するだけで自動で一連の処理が行われる。
ttlファイルの実行方法は主に2つ。1つは、TeraTermからttlファイルを選択して実行する方法。他方は、ttlファイルをダブルクリックして実行する方法。後者の方法では、Teratermインストール時にttlファイルの関連付けを行わなかった場合、事前にttlファイルをTeraTermマクロで実行するように関連付け設定を行う必要がある。
1.1TeraTermから実行
TeraTermアイコンをクリックすると、下図のような画面になるので
新しい接続先を入力する画面を「×」で消した後、上部のメニューから「コントロール」を選択し、「マクロ(M)」をクリック。
すると、teratermのフォルダ(C:\Program Files (x86)\teraterm)が表示されるので、そこに事前に配置しておいた実行したいttlファイルをクリックするか、もしくは別のファルダまで移動して所望のttlファイルをダブルクリック。
1.2ttlファイルをダブルクリック実行
まずは、どれか一つ実行したいttlファイルを右クリックして「プロパティ」を開く。「全般」の「変更」をクリックし、ttlファイルを開く方法としてアプリが表示されるので、「このPCで別のアプリを探す」を選択。
TeraTermのフォルダ(C:\Program Files (x86)\teraterm)まで移動し、「ttpmacro.exe」をダブルクリックし、プロパティの「適用」を押して「OK」をする。
以上の関連付け設定を無事完了させると、ttlファイルをダブルクリックするだけでTeraTermマクロを実行できるようになる。
2.パスワード認証ログイン
timeout=5
;-------------------------------------------------------
;ログイン情報
HOSTIP = 'a.a.a.a'
USERNAME = 'hoge'
PASSWORD = 'hoge'
;-------------------------------------------------------
;-------------------------------------------------------
;SSHログイン
msg = HOSTIP
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg USERNAME
strconcat msg ' /passwd='
strconcat msg PASSWORD
connect msg
end
3.公開鍵認証ログイン
公開鍵認証方式の場合は、パスワード認証方式で/auth=password
としていたところを、/auth=publickey
に書き換え、鍵のパスを指定するだけ。
timeout=5
;-------------------------------------------------------
;ログイン情報
HOSTIP = 'a.a.a.a'
USERNAME = 'hoge'
PASSWORD = 'hoge'
KEYFILE = 'C:/XXX/YYY.key'
;-------------------------------------------------------
;-------------------------------------------------------
;SSHログイン
msg = HOSTIP
strconcat msg ':22 /ssh /auth=publickey /user='
strconcat msg USERNAME
strconcat msg ' /keyfile='
strconcat msg KEYFILE
connect msg
end
4.サーバを選択してログイン
SSH接続したいサーバごとにTeraTermマクロを作成するのは面倒。
ということで、マクロを実行する際に接続先サーバを指定してログインできるようにする。下図のように選択画面を出す。
timeout=5
;-------------------------------------------------------
;接続先ホスト別情報
HOSTIP1 = 'a.a.a.a'
USERNAME1 = 'hoge'
PASSWORD1 = 'hoge'
KEYFILE1 = 'C:/XXX/YYY.key'
HOSTNAME1 = 'サーバ1'
HOSTIP2 = 'b.b.b.b'
USERNAME2 = 'hoge'
PASSWORD2 = 'hoge'
KEYFILE2 = 'C:/XXX/YYY.key'
HOSTNAME2 = 'サーバ2'
;-------------------------------------------------------
;-------------------------------------------------------
;選択画面
sprintf '【1】:%s %s【2】:%s %s' HOSTNAME1 #10 HOSTNAME2 #10
inputbox inputstr 'SSH接続対象を選択:'
str2int INPUTINT inputstr
if INPUTINT = 1 then
HOSTIP = HOSTIP1
USERNAME = USERNAME1
KEYFILE = KEYFILE1
elseif INPUTINT = 2 then
HOSTIP = HOSTIP2
USERNAME = USERNAME2
KEYFILE = KEYFILE2
else
messagebox '選択肢外が入力されました' '入力エラー'
endif
;-------------------------------------------------------
;-------------------------------------------------------
;SSHログイン
msg = HOSTIP
strconcat msg ':22 /ssh /auth=publickey /user='
strconcat msg USERNAME
strconcat msg ' /keyfile='
strconcat msg KEYFILE
connect msg
end
5.踏み台経由してサーバログイン
パブリックサブネット内に配置されているサーバを踏み台にして、プライベートサブネット内にあるサーバへssh接続する方法。
timeout=5
;-------------------------------------------------------
;接続先ホスト別情報
HOSTIP1 = 'a.a.a.a'
USERNAME1 = 'hoge'
PASSWORD1 = 'hoge'
KEYFILE1 = 'C:/XXX/YYY.key'
HOSTNAME1 = 'サーバ1'
HOSTIP2 = 'b.b.b.b'
USERNAME2 = 'hoge'
PASSWORD2 = 'hoge'
KEYFILE2 = 'C:/XXX/YYY.key'
HOSTNAME2 = 'サーバ2'
;-------------------------------------------------------
;-------------------------------------------------------
;選択画面
sprintf '【1】:%s %s【2】:%s %s' HOSTNAME1 #10 HOSTNAME2 #10
inputbox inputstr 'SSH接続対象を選択:'
str2int INPUTINT inputstr
;-------------------------------------------------------
;-------------------------------------------------------
;SSHログイン
if INPUTINT = 1 then
msg = HOSTIP1
strconcat msg ':22 /ssh /auth=publickey /user='
strconcat msg USERNAME1
strconcat msg ' /keyfile='
strconcat msg KEYFILE1
connect msg
elseif INPUTINT = 2 then
msg = HOSTIP1
strconcat msg ':22 /ssh /auth=publickey /user='
strconcat msg USERNAME1
strconcat msg ' /keyfile='
strconcat msg KEYFILE1
connect msg
wait '$' ;プロンプトを待つ
msg = 'ssh '
strconcat msg USERNAME2
strconcat msg '@'
strconcat msg HOSTIP2
sendln msg
wait 'password'
sendln PASSWORD2
else
messagebox '選択肢外が入力されました' '入力エラー'
end
endif
end
Discussion