先日、TeraTerm Pro の TTLマクロを使い、telnet を使ってUnixサーバーに自動ログインする .ttl ファイルの編集の仕方をメモしました。
Unixサーバーがローカルネットワークに存在している場合はこれで問題ありませんが、遠隔地に設置してあるサーバーや、大規模組織内の別フロアに設置してあるサーバーへログインしたい場合は、Telnet よりも SSHプロトコルを使う方が少し安心できます。安全というよりも、最近では外部に対して telnet ポートが塞がれていることが多いので SSH を使わざるを得ないという事情の方が大きいと思います。そこでSSHネタ。
TeraTerm には ssh2login.ttl というマクロファイルが付属しています。
; sample macro of Tera Term ; ; File: ssh2login.ttl ; Description: auto login with SSH2 protocol ; Environment: generic ; Update: 2004/12/4 ; Author: Yutaka Hirata username = 'nike' hostname = '192.168.1.3' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; msg = 'Enter password for user ' strconcat msg username passwordbox msg 'Get password' msg = hostname strconcat msg ':22 /ssh /auth=password /user=' strconcat msg username strconcat msg ' /passwd=' strconcat msg inputstr connect msg
username と hostname を書き替えて、ttpmacro を起動すればFreeBSD10サーバーと接続手前まではゆくのですが、パスワード方式の認証は FreeBSD10が認めないようで接続できません。
そこで、/auth= の部分をchallenge 方式に変更します。
msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'
msg = hostname
strconcat msg ':22 /ssh /auth=challenge /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr
connect msg
これで、ttl ファイルをダブルクリックすると、パスワードを尋ねられ、入力するとログインが完了するようになります。安全面では、パスワードがファイルに保存されないので良いのですが、ログイン以降に何らかの自動化を図りたい場合は、パスワード入力も省略したいところです。
Password = 'AaAa1234' ;msg = 'Enter password for user ' strconcat msg username ;passwordbox msg 'Get password' msg = hostname strconcat msg ':22 /ssh /auth=challenge /user=' strconcat msg username strconcat msg ' /passwd=' strconcat msg Password connect msg
今度は緑文字のように書き替えて、ttlマクロ中に、パスワードを書いてしまえば、パスワード入力を省略してログインまで完了しますが、TTLファイルの中に平文でパスワードが書かれているので、自分のアカウントであるならかなり気持ち悪いところです。特殊アカウントであるなら我慢できるかも。
パスワードを秘匿するために、先日 telnetプロトコルでログインするマクロで使用した「getpassword ‘password.dat’ ‘mypassword’ Password」行を使用します。
次のように、修正することで password.dat ファイルの中に暗号化して保存されたパスワードを読み取って、FreeBSD10サーバーに自動ログインが出来るようになります。
username = 'nike' hostname = '192.168.1.3' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; strconcat msg username getpassword 'password.dat' 'mypassword' Password msg = hostname strconcat msg ':22 /ssh /auth=challenge /user=' strconcat msg username strconcat msg ' /passwd=' strconcat msg Password connect msg
ssh2login.ttl の修正例の一つでした。