【残念な結果に…】話題の Windows Terminal でヤマハルーター RTX810 に SSH で接続してみた

#話題の Windows Terminal

2019年6月のプレビュー版公開から約一年の準備期間を経て 2020/05/19 に Version 1.0 がリリースされた Windows Terminal ですが、 Chrome みたいなわかりやすいタブでの接続先の切り替えやきめ細かく設定できるショートカットキーのカスタマイズ性などで期待を集めています。

何よりも Windows のコマンドプロンプトと Linux 等へのターミナル接続が同じユーザインタフェースで扱えるようになるというのは画期的です。今まで コマンドプロンプトと Tera Term や PuTTY の微妙な操作性の違いにイラッときていた多くの人々に救済をもたらしてくれることになるでしょう。

Qiita でもいくつか記事があがってますね。

- [Windows Terminal (v0.7 ～ v1.0) メモ](https://qiita.com/rubytomato@github/items/e88cab84f36e44797cf2)
- [Windows Terminal Tips](https://qiita.com/whim0321/items/6a6b11dea54642bd6724)
- [Windows Terminalをカスタマイズしよう！](https://qiita.com/hideki0145/items/04582a26baf3d81632c1)

#ヤマハのルーター
新型コロナウイルスの感染拡大に伴うテレワーク需要の増加で、会社のネットワークに自宅から安全に接続できる環境を簡単に構築できるヤマハのルーターへの注目は高まっていますね。RTX810 は後継の RTX830 が 2017年10月に発売された今となっては型遅れの製品ですが、ヤマハのルーターの安定した品質は 10年くらいでは故障の前兆を見せることもまったくないので、まだまだお払い箱にしてしまうにはもったいない。もうしばらく現役で頑張ってもらいたいところです。

ヤマハのルーターは各種設定用の Webインターフェースが提供されているのですが、細かい設定は CUIでの操作が必須です。Windows Terminal で接続できれば他のターミナルと共通の操作性になり便利になります。 

#繋いでみよう
##RTX810 側の事前設定
RTX810 にSSH で接続しようという人はたいてい既に Tera Term 等で接続しているはずなので RTX810 側の設定はできているはずです。今更ここで説明する必要もなさそうですが、ねんのため軽く説明しておきます。
###Web の設定画面の「詳細設定と情報」から設定する
![rtx810_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/0c92d7f9-2750-3e8d-ce5d-5a755436867a.png)

###SSH・SFTPサーバー機能を使用するに設定する
![rtx810_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/1aaf395c-97c8-0098-3ea7-2ad9fc914ae2.png)

###接続するユーザーに SSH による接続を許可する
![rtx810_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/124b4f49-fa6b-ed8c-9d7d-4302cf02da6b.png)



##settings.json の編集 & 共通設定
ルーター側の設定ができたら次はパソコン側の設定です。
Windows Terminal のインストールについては Microsoft Store からインストールするだけで、特に難しいこともないので説明は省略させていただきます。

インストールができたら、起動します。初期状態では PowerShell が起動します。
![wintrm_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/526ab103-668a-3209-4a5d-3fd33bada32c.png)

ウインドウ上部のタブの右側にある「∨」をクリックするとメニューが表示されます
![wintrm_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/221534d3-c0d1-70a5-f69f-ccd693d5eb04.png)


ここで　歯車マークの「設定」を選ぶとエディタが開かれ、Widows Terminal の設定ファイル settings.json が編集対象になっています。

どんなエディタが開くかは、そのパソコンで json ファイルにどのアプリケーションが関連付けられているかによって変わってきますが、私の場合は サクラエディタが開きます。


エディタが起動したら好みの設定に変更してみましょう。
私の場合は表示フォントとマウスの範囲設定時の動作を変更します。

###フォントの変更
私はコーディング時やターミナルエミュレータでは "MyricaM M" を使用することにしているでその設定をします。"profiles" の "defaults" に追記します。

```settings.json
    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "fontFace": "MyricaM M"
        },
```


###範囲指定でクリップボードにコピー
Tera Term 等で、マウスで範囲指定をするとその文字列がクリップボードにコピーされ、右クリックすると貼り付けられるという機能を利用されている方は多いと思います。Windows のコマンドプロンプトではその動作が微妙に違っていてストレスになっていました。その機能が Windows Terminal では提供されています。ただし初期設定ではその機能は止められているので設定を変更して使えるようにします。"copyOnSelect" を false から true に変更します。

```settings.json
    // If enabled, selections are automatically copied to your clipboard.
    "copyOnSelect": true,
```

エディタでファイルを上書き保存すると Windows Terminal に設定が反映されます。 実際にマウスの操作等確認してみてください。

##RTX810 用プロファイルの追加
そしていよいよ RTX810 用プロファイルの設定です。

settings.json を変更する前に、guid を作成します。 PowerShell で下記のコマンドを実行してください。

```PowerShell.ps
PS C:\Users\kazu> New-Guid

Guid
\----
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ← このGuidをsettings.jsonに設定する
```

次に settings.json を編集します。 初期設定では "profiles" に "コマンド プロンプト"、"Windows PowerShell"、"Azure Cloud Shell" の三つの設定があるので、その下に RTX810用の設定を追加します。

###プロファイルの追加
```settings.json
                ・
                "source": "Windows.Terminal.Azure"
            },
            {
                "guid": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",
                "hidden": false,
                "name": "YAMAHA RTX-810",
                "commandline": "ssh -l username 192.168.xxx.xxx"
            }
```
【注意 1】Azure の設定の最後の } の 後ろに ,(カンマ)を加えるのを忘れないで下さい
【注意 2】無名ユーザーでログインするときは -l username は不要です

エディタでファイルを上書き保存すると Windows Terminal に設定が反映されます。 メニューに RTX810 の設定は反映されているのでクリックして RTX810への接続を起動します。

Password を求められるので、入力したら接続完了です。



###背景を変えてみる
コマンドプロンプトや PowerShell につないだ時と画面を明確に変えて、誤操作を防ぐという意味でも背景の画像を変更します。 機種は異なりますが、 ヤマハのダウンロードページから RTX1210 の壁紙が提供されているのでダウンロードして設定します。


- [ヤマハネットワーク製品のダウンロードページ]

次の三行を RTX810 のプロファイルに追加します。

(https://network.yamaha.com/article/nw20th/download)

```settings.json
                "useAcrylic" : false,
                "backgroundImage" : "C:\\Users\\xxxx\\Pictures\\wall\\wallpaper_RTX1210_1600x900.jpg",
                "backgroundImageOpacity" : 0.5,
```


###アイコンを追加する
メニューを開いた時にコマンドプロンプトや PowerShell にはアイコンがあるのに RTX810 にはアイコンがないのはさみしいのでアイコンを追加します。ヤマハのマークを適当に作って、次の一行を RTX810 のプロファイルに追加します。

```settings.json
                "icon": "C:\\Users\\xxxx\\Pictures\\icon\\yamaha.png",
```

エディタでファイルを上書き保存すると Windows Terminal に設定が反映されます。

![wintrm_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/daa1ccd3-c33c-5e53-2f3e-e988ede86801.png)

背景画像が設定され、アイコンも追加されていい感じです。



#残念な結果
ここまで Windows Terminal の操作性やわかりやすくてシンプルな設定方法に満足して、Microsoft に対して抱えていた積年の負の感情が氷解しかけていましたが、一つの問題点に気がつきます。

ログインした RTX810 で設定内容を確認してみると

![wintrm_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/8661c75d-d5f2-5bb9-66c6-8afe02af6371.png)

あれ？ 一番下の行が文字化けしてる！ ああそうか…文字コードの設定がズレてるのか…

RTX810 は初期設定では文字コードは SHiftJIS になっているはず。 Windows Terminal は違う文字コードということなのでしょう。

###Windows Terminal の ShiftJIS への対応はどうなってる？

マイクロソフトのドキュメントをいろいろ探してみる
- [Windows ターミナルとは](https://docs.microsoft.com/ja-jp/windows/terminal/)

Unicode および UTF-8 文字がサポートされてることはわかるが、他の設定についてはまったく記述がない。他の設定の資料等を見ても文字コードの設定変更の方法が見つかりません。

###ルーターを UTF8に設定すれば良いのでは？
仕方がないから RTX810 の設定を UTF8 に替えようと思い、ヤマハのルーターのマニュアルを確認します。

- [ヤマハルーター コマンドリファレンス － ネットワーク4.19 コンソールの言語とコードの設定](http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/setup/console_character.html)

マニュアルに従ってコマンド叩いてみます。

```WindowsTerminal.log
# console character ja.utf8
�G���[: �p�����[�^�̃L�[���[�h���F���ł��܂���
#
```

あれ？何かエラーが出てるっぽい。
文字化けのない Tera Term で設定してみると

```TeraTerm.log
# console character ja.utf8
エラー: パラメータのキーワードが認識できません
#
```

ん？ 
ヤマハのルーターのマニュアルを再度確認

![yamaha_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406456/63f632ea-5fa7-6213-034c-66d1f48e9d56.png)

Rev.14.01 系以降しか utf8 に対応していないらしい。 で RTX810 のファームウェアのバージョンは・・・

```TeraTerm.log
> show config
# RTX810 Rev.11.01.34 (Tue Nov 26 18:39:12 2019)
・
・
```

マジか…
最新の　RTX1210 や RTX830 では utf8 がサポ―トされているけど、RTX1200 や RTX810 では ShiftJIS か EUC しか選べないと言うことなのか…

ここでいったんあきらめて、ascii に設定しました。（英語でメッセージが返される） ルーターから返ってくるメッセージなんかたいして種類ないし、英語でも理解できるでしょ

#愛と感動の次回へ続く？

Windows Terminal のソースコードは GitHub で公開されているのでそれを読めば解決方法を見つけ出すことができるに違いないと考えています。（淡い期待）

それとも、この記事を読んだ優しい誰かが私が見逃している設定を教えてくれて解決するのが先かもしれません。

もしかしたら既存ユーザに対して通常では考えられないくらいの厚いサポートを行っているヤマハが UTF8に対応した RTX810 の新しいファームウェアのバージョンをリリースしてくれるかもしれません。

今後どのような進展があるかわかりませんが、問題が解決されたら続報を書きたいと思います。