ネットワーク

TeratermマクロでSSH自動ログインする方法|パスワード認証

ネットワーク機器やサーバへの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

詳しくは接続エラー処理の記事で解説しています。

関連記事

-ネットワーク