Tera Termマクロ活用入門(1):各種ログインを自動化する 5ページ

自動多段ログイン

 ネットワーク環境によっては、あるサーバー(中継サーバー)にSSHでログインし、さらにそのサーバーから別のサーバーにログインする、という作業が必要な場合がある。このような場合、中継サーバーへのログインと、そこから目的のサーバーへのログインを自動で行うようにマクロを用意すると便利だ。たとえば、上記で紹介している自動接続マクロの最後に次のリスト7のマクロを追加すればよい。

リスト7 リモートホストへの接続語、自動的に別のホストにSSH接続するマクロ

;; 2段目のSSH接続
host_2nd = '<ユーザー名>@<ホスト名> ; 目的のサーバー(2回目のSSH先)のユーザー名とホスト名。例)otp@192.168.3.4
remote_prompt = '$' ; シェルのプロンプトを指定する。bash系なら「$」、cshなら「%」、tcshなら「>」など

ssh_command = 'ssh '
strconcat ssh_command host_2nd

wait remote_prompt
sendln ssh_command

 たとえば、リスト4にこのマクロを追加したものを実行すると、Tera Termの起動後にまず中継サーバーへのSSH接続が行われ、続いて目的のサーバーへの接続が行われてパスフレーズ(もしくはパスワード。環境によって異なる)が要求される(図5)。

図5 多段ログインの実行例
図5 多段ログインの実行例

 また、リスト7の代わりにリスト8のようなマクロを利用することで、2回目以降はパスワードの入力を行わずに目的のサーバーへのログインが可能になる。

リスト8 リモートホストへの接続語、自動的に別のホストにSSH接続するマクロ(自動ログイン版)

;; 2段目のSSH接続
host_2nd = '<ユーザー名>@<ホスト名> ; 目的のサーバー(2回目のSSH先)のユーザー名とホスト名。例)otp@192.168.3.4
remote_prompt = '$' ; シェルのプロンプトを指定する。bash系なら「$」、cshなら「%」、tcshなら「>」など

ssh_command = 'ssh '
strconcat ssh_command host_2nd
passwdkey = hostname
strconcat passwdkey '-'
strconcat passwdkey host_2nd
passwd_prompt = 'pass'

getpassword passwdfile passwdkey password

wait remote_prompt
sendln ssh_command
wait passwd_prompt
sendln password

今回紹介したツール:Tera Term