広告 デバイス

【解説】公開鍵認証方式によるSSH接続について分かりやすく解説!

※本ページには、プロモーション(広告)が含まれています。

悩んでいる人

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を導入していない方は、以下からダウンロードできるので、ダウンロードと展開をしておいてください。

Tera Termのダウンロード

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を指定
TeraTermマクロ(パスフレーズなしバージョン)の設定

また、「;」から始まる行はコメントであることを表します。

パスフレーズありバージョン

パスフレーズありバージョンのマクロも紹介します。このマクロも「.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を指定
TeraTermマクロ(パスフレーズありバージョン)の設定

上記を作成後、ディレクトリ構成は以下のようになっていると思います。


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を探し、ショートカットを作成します。

ttpmacro.exeのショートカットを作成

ショートカットを作成後、右クリック→プロパティを選択します。

ttpmacro.exe ショートカット プロパティ
プロパティの画面

リンク先の末尾に..\teraterm_macros\sample_without_passphrase.ttlを追加します。この時、ttpmacro.exeの後ろに半角スペースを入れるのを忘れないでください。

ttpmacro.exe ..\teraterm_macros\sample_without_passphrase.ttl
ttpmacro.exe 実行時引数
プロパティの画面(ttlファイルの相対パス指定後)

入力完了後、OKを押下します。また、対象が分かるようにショートカットのファイル名をsample_without_passphrase - ショートカットという名称に変更しておきます。

同様にショートカットを作成し、sample_with_passphrase.ttlの方も設定します。

ttpmacro.exe 実行時引数
プロパティの画面(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ファイルの相対パスを追加します。

スポンサードリンク

-デバイス
-