TeraTerm:TTLマクロでFreeBSDサーバーに自動SSHログインする

先日、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 の修正例の一つでした。

コメントを残す