TeraTermを用いて公開鍵認証方式でサーバにアクセスしているが、毎回のログイン作業が面倒だと感じている。
ログイン作業を効率化する方法を知りたい。
こんなお悩みを解決します。
TeraTermによるサーバへのログインは、大きく分けてパスワード認証方式と公開鍵認証方式の2パターンがあります。
これらの手法のうち、セキュリティ面も考慮すると、公開鍵認証方式の方が安全性が高くなります。
一方、公開鍵認証方式の場合、暗号化に利用する鍵の指定等の操作が入り、アクセス時の作業が増えてしまいます。
ここでは、TeraTermのマクロ機能を利用してサーバにアクセスする方法を解説します。
必要な設定を順番に解説していきますので、興味がある方はぜひ最後までご覧ください。
前提条件
今回は、下記の条件のもとでサーバに接続する場合について解説します。
- TeraTermは、ポータブル版を利用します。
バージョン:4.106 - TeraTermは、以下に格納されている前提とします。
D:\workspace\teraterm-4.106
- TeraTermマクロを以下に格納する前提とします。
D:\workspace\teraterm_macros
- パブリックキー(公開鍵)とプライベートキー(秘密鍵)は作成済みとします。
また、プライベートキー(秘密鍵)は、以下に格納されている前提とします。D:\workspace\teraterm_macros\ssh_keys\private.key
- 公開鍵認証方式でログインできるようにサーバ側の設定は更新済みであるとします。
- ログイン先のユーザの
authorized_keys
に、公開鍵を登録済みとします。
D:.
|-- teraterm-4.106/
| |-- EDITOR.CNF
| |-- FUNCTION.CNF
| |-- IBMKEYB.CNF
| |-- KEYBOARD.CNF
| |-- TERATERM.INI
| |-- ttpmacro.exe
| |-- ttpmenu.exe
| |-- ttpmenu.ini
| `-- ...(以下略)
`-- teraterm_macros/
`-- ssh_keys/
`-- private.key
また、TeraTermを導入していない方は、以下からダウンロードできるので、ダウンロードと展開をしておいてください。
TeraTermマクロの作成
パスフレーズなしバージョンとパスフレーズありバージョンの両方について解説します。
パスフレーズなしバージョン
以下のmacroを作成し、「.ttl」という拡張子を付けてteraterm_macros
直下に保存してください。ここでは、sample_without_passphrase
.ttlとします。
; === configuration ===
; username(環境に合わせて変更する)
username = 'user'
; hostname(環境に合わせて変更する)
hostname = 'aaa.bbb.ccc.ddd'
; secret file(環境に合わせて変更する)
keyfile = 'ssh_keys\private.key'
; port
port = 22
; =====================
; get current directory:作業ディレクトリの取得
getdir current_dir
; get private key filepath:プライベートキー(秘密鍵)の取得先を絶対パスで指定
sprintf2 private_key_fullpath '%s\%s' current_dir keyfile
; create connection command
sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /keyfile=%s' hostname port username private_key_fullpath
connect msg
end
それぞれの変数名についての解説を以下に示します。
変数 | 内容 | 補足 |
---|---|---|
username | ユーザ名 | user を指定(環境に合わせて変更する) |
hostname | サーバのホスト名orIPアドレス | aaa.bbb.ccc.ddd を指定(環境に合わせて変更する) |
keyfile | プライベートキー(秘密鍵)の相対パス | ssh_keys 以下に格納している秘密鍵を指定(環境に合わせて変更する) |
port | 接続時のポート番号 | デフォルト値の22 を指定 |
また、「;」から始まる行はコメントであることを表します。
パスフレーズありバージョン
パスフレーズありバージョンのマクロも紹介します。このマクロも「.ttl」という拡張子を付けてteraterm_macros
直下に保存してください。ここでは、sample_with_passphrase
.ttlとします。
; === configuration ===
; username(環境に合わせて変更する)
username = 'user'
; hostname(環境に合わせて変更する)
hostname = 'aaa.bbb.ccc.ddd'
; secret file(環境に合わせて変更する)
keyfile = 'ssh_keys\private.key'
; password file
passwdfile = 'passwd.txt'
; port
port = 22
; =====================
; get current directory:作業ディレクトリの取得
getdir current_dir
; set absolute path:暗号化したパスワードの保存先を絶対パスで指定
sprintf2 passwd_fullpath '%s\%s' current_dir passwdfile
; get encrypted password:暗号化したパスワードをファイルから取得
getpassword passwd_fullpath username userpasswd
; get private key filepath:プライベートキー(秘密鍵)の取得先を絶対パスで指定
sprintf2 private_key_fullpath '%s\%s' current_dir keyfile
; create connection command
sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /passwd=%s /keyfile=%s' hostname port username userpasswd private_key_fullpath
connect msg
end
それぞれの変数名についての解説を以下に示します。
変数 | 内容 | 補足 |
---|---|---|
username | ユーザ名 | user を指定(環境に合わせて変更する) |
hostname | サーバのホスト名orIPアドレス | aaa.bbb.ccc.ddd を指定(環境に合わせて変更する) |
keyfile | プライベートキー(秘密鍵)の相対パス | ssh_keys 以下に格納している秘密鍵を指定(環境に合わせて変更する) |
passwdfile | 秘密鍵に登録したパスフレーズの格納先 | - |
port | 接続時のポート番号 | デフォルト値の22 を指定 |
上記を作成後、ディレクトリ構成は以下のようになっていると思います。
D:.
|-- teraterm-4.106/
| |-- EDITOR.CNF
| |-- FUNCTION.CNF
| |-- IBMKEYB.CNF
| |-- KEYBOARD.CNF
| |-- TERATERM.INI
| |-- ttpmacro.exe
| |-- ttpmenu.exe
| |-- ttpmenu.ini
| `-- ...(以下略)
`-- teraterm_macros/
|-- sample_without_passphrase.ttl # 追加分
|-- sample_with_passphrase.ttl # 追加分
`-- ssh_keys/
`-- private.key
接続時のショートカットを作成
先ほど作成したマクロを利用して、サーバに接続する準備をします。
TeraTermのディレクトリの中からttpmacro.exe
を探し、ショートカットを作成します。
ショートカットを作成後、右クリック→プロパティを選択します。
リンク先の末尾に..\teraterm_macros\sample_without_passphrase.ttl
を追加します。この時、ttpmacro.exeの後ろに半角スペースを入れるのを忘れないでください。
ttpmacro.exe ..\teraterm_macros\sample_without_passphrase.ttl
入力完了後、OKを押下します。また、対象が分かるようにショートカットのファイル名をsample_without_passphrase - ショートカット
という名称に変更しておきます。
同様にショートカットを作成し、sample_with_passphrase.ttl
の方も設定します。
作成したショートカットは、管理しやすいようにD:\workspace
直下に保存しておきます。
ここまでで、以下のようなディレクトリ構成になっていると思います。
D:.
|-- sample_without_passphrase - ショートカット.lnk # 追加分
|-- sample_with_passphrase - ショートカット.lnk # 追加分
|-- teraterm-4.106/
| |-- EDITOR.CNF
| |-- FUNCTION.CNF
| |-- IBMKEYB.CNF
| |-- KEYBOARD.CNF
| |-- TERATERM.INI
| |-- ttpmacro.exe
| |-- ttpmenu.exe
| |-- ttpmenu.ini
| `-- ...(以下略)
`-- teraterm_macros/
|-- sample_without_passphrase.ttl
|-- sample_with_passphrase.ttl
`-- ssh_keys/
`-- private.key
以上で、一通りの設定は完了となります。
サーバに接続
最後に、先ほど作成したショートカットを用いてサーバにアクセスできることを確認しておきます。
作成したいずれかのショートカットをダブルクリックしてログインできることを確認してください。
また、パスフレーズありバージョン(sample_with_passphrase.ttl)は、初回ログイン時に以下のようにパスフレーズの入力を求められます。パスフレーズは暗号化後に保存され、2回目以降は入力は不要となります。同時に、teraterm_macros
直下にpasswd.txt
が生成されていることを確認してください。
まとめ
パスフレーズなしバージョンとパスフレーズありバージョンの両方に対し、マクロの作り方を解説しました。
パスフレーズなしバージョン
テキストファイルに下記の情報を書き込み、「.ttl」という拡張子で保存してください。
; === configuration ===
; username(環境に合わせて変更する)
username = 'user'
; hostname(環境に合わせて変更する)
hostname = 'aaa.bbb.ccc.ddd'
; secret file(環境に合わせて変更する)
keyfile = 'ssh_keys\private.key'
; port
port = 22
; =====================
; get current directory:作業ディレクトリの取得
getdir current_dir
; get private key filepath:プライベートキー(秘密鍵)の取得先を絶対パスで指定
sprintf2 private_key_fullpath '%s\%s' current_dir keyfile
; create connection command
sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /keyfile=%s' hostname port username private_key_fullpath
connect msg
パスフレーズありバージョン
テキストファイルに下記の情報を書き込み、「.ttl」という拡張子で保存してください。
; === configuration ===
; username(環境に合わせて変更する)
username = 'user'
; hostname(環境に合わせて変更する)
hostname = 'aaa.bbb.ccc.ddd'
; secret file(環境に合わせて変更する)
keyfile = 'ssh_keys\private.key'
; password file
passwdfile = 'passwd.txt'
; port
port = 22
; =====================
; get current directory:作業ディレクトリの取得
getdir current_dir
; set absolute path:暗号化したパスワードの保存先を絶対パスで指定
sprintf2 passwd_fullpath '%s\%s' current_dir passwdfile
; get encrypted password:暗号化したパスワードをファイルから取得
getpassword passwd_fullpath username userpasswd
; get private key filepath:プライベートキー(秘密鍵)の取得先を絶対パスで指定
sprintf2 private_key_fullpath '%s\%s' current_dir keyfile
; create connection command
sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /passwd=%s /keyfile=%s' hostname port username userpasswd private_key_fullpath
connect msg
end
ショートカット作成
ttpmacro.exe
のショートカットを作成し、右クリック→プロパティの順にたどり、プロパティを開きます。そして、リンク先の末尾に.ttlファイルの相対パス
を追加します。