ネットワーク機器やサーバへのSSHログインをTeratermマクロで自動化します。毎回IPアドレスとパスワードを手入力する手間がなくなり、検証作業が大幅に短縮できます。
構文
connect <接続文字列>
SSH接続の場合、接続文字列に認証情報を含めます。
使用例
IPADDRESS = '1.1.1.1'
Port = '22'
USERNAME = 'admin'
PASSWORD = 'test'
Con = ''
strconcat Con IPADDRESS
strconcat Con ':'
strconcat Con Port
strconcat Con ' /ssh /auth=password /user='
strconcat Con USERNAME
strconcat Con ' /passwd='
strconcat Con PASSWORD
strconcat Con ' /timeout=5'
connect Con
Con の中身は最終的にこうなります。
1.1.1.1:22 /ssh /auth=password /user=admin /passwd=test /timeout=5
sprintf2を使った書き方
strconcat を7回並べるより、sprintf2 のほうが簡潔です。
IPADDRESS = '1.1.1.1'
USERNAME = 'admin'
PASSWORD = 'test'
sprintf2 Con '%s:22 /ssh /auth=password /user=%s /passwd=%s /timeout=5' IPADDRESS USERNAME PASSWORD
connect Con
やっていることは同じですが、接続文字列の全体像が1行で見えるため、あとから修正しやすくなります。
オプションの意味
| オプション | 意味 |
|---|---|
/ssh |
SSHで接続する |
/ssh2 |
SSH2に限定する |
/auth=password |
パスワード認証を使う |
/auth=publickey |
公開鍵認証を使う |
/user= |
ログインユーザ名 |
/passwd= |
パスワード |
/keyfile= |
秘密鍵のファイルパス(公開鍵認証時) |
/timeout=5 |
接続タイムアウト(秒) |
公開鍵認証で接続する場合
connect '1.1.1.1:22 /ssh /auth=publickey /user=admin /keyfile=C:\key\id_rsa'
パスフレーズがある場合は /passwd= にパスフレーズを指定します。
セキュリティ上の注意
マクロファイルにパスワードを平文で書くことになります。
.ttl ファイルは単なるテキストファイルなので、誰でも開けばパスワードが読めます。実務では以下を守ってください。
- 共有フォルダやGitリポジトリに置かない
- 検証用アカウントを使い、本番の管理者アカウントは書かない
- 作業後はファイルを削除するか、パスワード部分を空にしておく
- 可能なら公開鍵認証に切り替える
パスワードを毎回手入力させたい場合は passwordbox が使えます。
passwordbox 'パスワードを入力してください' 'SSH接続'
; 入力値は inputstr に入る
sprintf2 Con '%s:22 /ssh /auth=password /user=%s /passwd=%s' IPADDRESS USERNAME inputstr
connect Con
接続できたか確認する
connect は接続に失敗してもマクロが止まりません。失敗を検知する処理を必ず入れてください。
testlink
pause 2
if result <> 2 then
messagebox "接続できませんでした。" "接続エラー"
end
endif
詳しくは接続エラー処理の記事で解説しています。