河野哲治のコラム「 vRXでパスフレーズ付き公開鍵認証を試してみよう」

みなさんこんにちは。テックデザインの河野です。
最近vRXをガッツリと触る機会があり、今までのヤマハルーターにない特徴や機能を色々と体験することができました。そのなかから今回は「パスフレーズ付き公開鍵認証」について紹介いたします。

vRXは公開鍵認証に対応しています。デプロイ直後はAWSで作成したキーペアの公開鍵が無名ユーザー用として登録されていますが、AWSで作成したキーペアとは別に任意の公開鍵を登録することも可能です。試しにパスフレーズ付き公開鍵を登録してみたところ、正常に動作したので設定手順を紹介いたします。

本記事の内容は、AWSアカウントをお持ちであれば vRX 無償トライアルライセンスがなくても試すことが可能です。動作確認は vRX Rev.19.00.01 (Fri Sep 13 12:13:56 2019)、MacOS 10.15.2 Catalina および Windows 10 Pro バージョン1909 で行っています。vRX のデプロイ方法については、vRXユーザーガイド と SCSKネットワークプロダクト部公式 YouTube チャンネルの「仮想ルーター設定講座 前編・後編」で詳しく解説されています。

vRXユーザーガイド
http://www.rtpro.yamaha.co.jp/RT/manual/vrx/userguide/ja/03_setup_ja.html#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97
仮想ルーター設定講座 前編
https://www.youtube.com/watch?v=dCrReJPfB5E
仮想ルーター設定講座 後編
https://www.youtube.com/watch?v=NlNdII05zo0

1.パスフレーズ付き公開鍵の作成
まずはローカル環境で vRX に登録するパスフレーズ付き公開鍵を「ssh-keygen -t rsa」コマンドで作成します。Windows の場合はWindows Subsystem for Linux に Ubuntu をインストールするか、Git をインストールすると ssh-keygen コマンドが使えるようになります。
今回はテスト用のキーペアなので「vrx_id_rsa」という名前でカレントディレクトリに作成します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/XXXXXX/.ssh/id_rsa): vrx_id_rsa
Enter passphrase (empty for no passphrase):(パスフレーズを入力してEnter)
Enter same passphrase again:(パスフレーズを再入力してEnter)
Your identification has been saved in vrx_id_rsa.
Your public key has been saved in vrx_id_rsa.pub.
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX@XXXXXX.local
The key's randomart image is:
+---[RSA 2048]----+
| …. |
| o o |
| + . o . |
| . o + o|
| E S . . +o|
| + + .o ++.|
| o +ooo=O=|
| +.o ==+#|
| . ..o .@@|
+----[SHA256]-----+

「vrx_id_rsa」と「vrx_id_rsa.pub」という2つのファイルが作成されました。前者が秘密鍵、後者が公開鍵になります。

2.ログインユーザーの作成
ここからは vRX の設定になります。
パスフレーズ付き公開鍵を使用するユーザーを事前に作成しておきますが、ここで入力するパスワードは公開鍵のパスフレーズと同じにする必要はありません。通常のパスワード認証で利用するパスワードになります。

vRX# login user TechDesign
New_Password:(パスワードを入力)
New_Password:(パスワードを再入力)
Password Strength : Very strong

3.パスフレーズ付き公開鍵の登録
作成した公開鍵(vrx_id_rsa.pub)を vRX に登録します。公開鍵はテキストエディタで開き、コピー&ペーストで入力します。

vRX# import sshd authorized-keys TechDesign
インポート先のファイル:
/ssh/authorized_keys/TechDesign

公開鍵を1つ入力してください:(公開鍵をコピー&ペースト)

公開鍵をインポートしますか? (Y/N)Y
インポートしました。

ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX@XXXXXX.local

以上で設定は全て完了です。

4.SSHで接続してみる
それでは実際にSSHで接続してみます。
SSH接続の書式は「 ssh -i <秘密鍵> <ユーザー名>@<vRXのグローバルIPアドレス>」になります。

$ ssh -i vrx_id_rsa TechDesign@XX.XX.XX.XX
Enter passphrase for key 'vrx_id_rsa':(公開鍵作成時に入力したパスフレーズを入力してEnter)

vRX Rev.19.00.01 (Fri Sep 13 12:13:56 2019) ** Compact Mode **
Copyright (c) 1994-2019 Yamaha Corporation. All Rights Reserved.
To display the software copyright statement, execute 'show copyright detail'.
06:fc:fe:0a:91:3e, 06:d5:f2:bf:cf:1a
Memory 3727Mbytes, 4LAN

Valid license is not found. Operates in speed limited mode.
vRX>

無事接続することができました。
入力するパスフレーズは login user コマンドで入力したパスワードではないので注意をしてください。

もし下記のような警告が出てうまく接続ができない場合は、秘密鍵のパーミッションが適切に設定されていません。chmod コマンドで秘密鍵のパーミッションを600に変更してから再接続してみてください。

$ ssh -i vrx_id_rsa TechDesign@XX.XX.XX.XX
The authenticity of host 'XX.XX.XX.XX (XX.XX.XX.XX)' can't be established.
RSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'XX.XX.XX.XX' (RSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/XXXXXX/Downloads/vrx_id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/XXXXXX/Downloads/vrx_id_rsa": bad permissions
$ chmod 600 vrx_id_rsa

個人的には vRX 以外の現行機種にもぜひ実装して欲しい機能です。
次回も引き続き vRX の新機能を紹介する予定です。お楽しみに!