作業中のメモ

よく「計算機」を使って作業をする.知らなかったことを中心にまとめるつもり.

【TeraTerm】公開鍵認証方式による SSH 接続の自動化

どうも,筆者です.

最近,TeraTerm で LAN 内のサーバにアクセスすることが増えたが,毎回,サーバの指定とパスワードの入力が必要となる.

ここでは,TeraTerm の機能を利用し,ショートカットキーで TeraTerm のマクロを呼び出し,自動的に SSH 接続できるような仕組みを構築する.

本来は,安全のためにパスフレーズを入力するが,今回は,LAN 内の使用を前提とするため,パスフレーズの設定は省略する.

使用する TeraTerm に関する情報

  • TeraTerm は,ポータブル版を利用する.
  • 使用する TeraTerm のバージョンは,4.102 である.
  • TeraTerm の配置場所は以下のようにする.

    C:\Users\user\OneDrive\デスクトップ\apps\teraterm-4.102

参考サイト

以下のサイトを参考に,作業を行った.

www.j-oosk.com

qiita.com

ttssh2.osdn.jp

自動化の準備

公開鍵と秘密鍵の生成

TeraTerm の機能を用いて,公開鍵と秘密鍵を生成する.今回は,C:\Users\user\OneDrive\デスクトップ\apps\ssh_keyfile 以下に公開鍵と秘密鍵を保存する.

  1. 「Setup」→「SSH KeyGenerator」を押下する.

    生成画面
    公開鍵と秘密鍵の生成

  2. 「Key type」を「RSA」,「Key Bits」を「4096」とする(Key Bits:鍵の長さは 4096 以外でもよいが,なるべく長い方が良い).また,「bcrypt KDF format」のチェックを外し,「Generate」を押下する.

    鍵の設定

  3. 今回はパスフレーズなしのため,「Key passphrase」と「Confirm passphrase」は空欄のままとし,「Save public key」と「Save private key」を順に押下する.

    鍵の生成

    「Save private key」を押下時に,以下のようなメッセージが表示される.これは,「はい」を押下する.今回はパスフレーズなしのため,このような警告が表示される.

    パスフレーズなしのため表示される警告

公開鍵の設置

生成した公開鍵を SSH 接続先のサーバに配置する.

  1. 「File」→「New connection ...」を押下する.表示されたダイアログから接続先のサーバを指定し,「OK」を押下する.

    接続先のサーバの指定

  2. いつも通り「username」と「password」を入力し,「OK」を押下する.ここでは,ラズパイに接続するため,username を pi とする.

    ユーザ名とパスワードの入力

  3. ログイン後,「File」→「SSH SCP」を押下し,公開鍵「id_rsa.pub」をサーバのホームディレクトリにコピーする.ここでは,「From」には,C:\Users\user\OneDrive\デスクトップ\apps\ssh_keyfile\id_rsa.pub を,「To」には,~/ を指定した.

    SSH SCP

    公開鍵をサーバにコピー

  4. ファイルを転送が完了したら,コマンド操作で公開鍵(~/id_rsa.pub)を authorized_keys に追記する.

# 作業ディレクトリの確認
pwd
# 出力結果:/home/pi

# ファイルの確認
ls
# 出力結果:id_rsa.pub

# .ssh ディレクトリの生成とパーミッションの設定
mkdir .ssh
chmod 700 .ssh

# 公開鍵の追記
cat id_rsa.pub >> .ssh/authorized_keys
# authorized_keys のパーミッションの設定(初回生成時のみ)
chmod 600 .ssh/authorized_keys

# サーバから切断
exit

公開鍵認証方式によるログイン

再度,TeraTerm を立ち上げ,接続先を選択し,ユーザ名とパスワードを入力する画面を表示させる.その状態で,「Use RSA/DSA/ECDSA/ED 25519 key to log in」を選択し,「Private key file:」を押下し,先ほど生成した秘密鍵を選択する.今回の場合,秘密鍵C:\Users\user\OneDrive\デスクトップ\apps\ssh_keyfile\id_rsa となる.

公開鍵認証方式によるログイン

上記において,username を入力後に「OK」を押下して,サーバに接続できることを確認する.

TeraTerm マクロによる自動化

本題に入る.ここでは,TeraTerm マクロを用いて,以下を実現する.

  • ショートカットキーによる接続先の選択
  • SSH 接続に対し,有効なショートカットキーの一覧の表示
  • ショートカットキー押下後に自動接続

TeraTerm マクロの作成

サーバへ自動接続するために,マクロを作成する.ここでは,C:\Users\user\OneDrive\デスクトップ\apps\teraterm_macros というディレクトリを作成し,その中にマクロファイルを格納する.

サーバへの自動接続時に使用するマクロを以下に示す.ここでは,このファイルを「nas_server.ttl」として保存する.

; ===== setting =====
; usrename
username = 'pi'
; port
port = 22
; secret file path
keyfile = '"..\ssh_keyfile\id_rsa"'
; hostname
hostname = 'nas.example.com'
; ===== end =====

; create connection command
getdir current_dir
sprintf2 private_key_fullpath '%s\%s' current_dir keyfile
sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /keyfile=%s' hostname port username private_key_fullpath

; connect to server
connect msg

作成したファイルをダブルクリックし,パスフレーズを入力することなくログインできることを確認する.

ショートカットキーの登録

teraterm-4.102 内にある KEYBOARD.CNF を修正し,ショートカットキーを登録する.ここでは,Ctrl + F1 を押下時に,先ほど作成した「nas_server.ttl」が呼び出されるように設定する.

上記を実現するために,ファイルの末尾にある [User keys] 部分に以下を追記する.

; === User key definitions ===
[User keys]
;  Ctrl + F1 key: connect nas server
User1=1083,2,..\teraterm_macros\nas_server.ttl

上記を設定後,TeraTerm を開き,ショートカットキー(Ctrl + F1)を押下すれば,指定したマクロが呼び出され,サーバに接続できる.ショートカットキーを押下する際は,事前に「New connection」の画面を閉じること.

TeraTerm 起動時の設定の変更

上記の方法でショートカットキーによりサーバへ接続できるようになった.しかし,毎回表示される「New connection」を閉じる必要があることとショートカットキーを覚えておく必要がある.ここでは,この 2 点について改善する.

ショートカットキーの一覧を表示するマクロの作成

先ほど追加したショートカットキーを表示するマクロを作成する.ここでは,このマクロは teraterm-4.102 内に「startup_dialog.ttl」として保存する.

作成したマクロを以下に示す.

; refer to user key definitions
sprintf2 msg ''
strconcat msg 'Ctrl + F1: nas server\n' ; 今後追加する際は,この行を複製する
; convert special characters
strspecial msg
; show status dialog
statusbox msg 'server list'
; wait [sec]
pause 3
; close status dialog
closesbox

設定ファイルの更新

teraterm-4.102 内にある TERATERM.INI を開き,以下を修正する.

  • HostDialogOnStartup=onHostDialogOnStartup=off に修正.

    これにより,「New connection」のダイアログが非表示になる.

  • StartupMacro=StartupMacro=startup_dialog.ttl に修正.

    これにより,上記で作成した「ショートカットキーを表示するマクロ」が起動時に実行される.

起動時に表示される画面を以下に示す.このダイアログは 3 秒程度経過すると表示されなくなる.

サーバ一覧