Windows Terminal で SSH

Windows Terminal

Windows Terminal のインストール

Windows Terminal がバージョン1になりまして、めでたいという事で Windows Terminal でSSHができるように設定してみた。

Windows Terminal は Microsoft Store アプリからインストール可能で、「Windows Terminal」で検索すればすぐに出てくるのでインストールすればインストール完了。

Microsoft Store

Windows Terminal の設定は JSON-Schema で記述するようになっていて、設定は CTRL+, もしくはタブの右にある「V」から[設定]」を開くと JSON が関連付けれているアプリから起動する。

OpenSSH のインストール

Windows 10 1809 以降であれば標準機能として OpenSSH がインストールできる。

[設定]から[アプリ] > [アプリと機能] > [オプション機能の管理] の順にたどり、[機能の追加]を追加をクリックして、[オプション機能を追加する]で「ssh」で検索すると、[OpenSSHクライアント]と[OpenSSHサーバ]が見つかるので、[OpenSSHクライアント]にチェックをつけて[インストール]をクリックでインストールされる。

PowerShell経由でインストールするには PowerShell を管理者権限で開いて、

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

として OpenSSH 検索をすると

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

インストール可能な OpenSSH が表示されるので、

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

でインストールする。

OpenSSH のユーザ設定ファイルは %HOMEPATH%\.ssh に保存されるので、config ファイルなどを設定しておくと便利
ssh の話 - 日々雑文

もちろん OpenSSH クライアントをインストールしたあとなら、ssh-keygen コマンドなんかも使える。

Windows Terminal の設定

Windows Terminal の設定は先にも書いたように JSON ファイルを使用して編集する。

初期状態でいくつか設定があり、list 以下に Windows Terminal で開くシェルの設定がある。

           {
                // Make changes here to the powershell.exe profile.
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },

最初から含まれている上記の部分をコピーして新しい項目を作成していく

            {
                "guid": "{67f16340-40c4-445d-b148-a0da636de5c4}",
                "name": "examplessh",
                "commandline": "ssh.exe user@example.com",
                "hidden": false,

                "fontFace": "Cascadia code",  // 
                "fontSize": 10

                "snapOnInput": true,  // 入力時に入力位置までスクロール
                "scrollbarState": "visible",  // スクロールバーの表示
                "historySize": 10000,  // 履歴サイズ

                "useAcrylic": true, // アクリル背景の設定
                "acrylicOpacity": 1, // 背景の透明度

                // backgroundImageAlignment 
                // "center"、"left"、"top"、"right"、"bottom"、"topLeft"、"topRight"、"bottomLeft"、"bottomRight"
                // "backgroundImageAlignment": "top", // 表示する画像の基準値
                "backgroundImageOpacity": 0.3 // 背景の不透明度
                //"backgroundImage": "C:\\Users\\user\\image\\image.jpg"
            }   

guid は PowerShell

PS C:\Users\user> New-Guid

として取得することができる。

commandline で ssh.exe を指定して、接続するユーザ名、サーバを指定しておく。このときに .ssh/id_rsa とかを設定しておくとパスワードなしでサーバにログインすることができる。


でここまで設定しておいてなんだが、Windows Terminal ではまだクリッカブルURLに対応していない。 github では issue として議論されているのでいずれは実装されると思うのだが、自分はターミナルでメールを読んでいるのでこの機能がないと使うメリットが半減してしまう。せめて選択して右クリックメニューで[URLを開く]などがあればいいのだが。


Windows Terminal の設定一覧は以下参照

Windows Terminal Global Settings | Microsoft Docs


余談:

Windows Terminal には倒伏フォントとして、Cascadia code が追加されていて、プログラミング用の合字フォントが含まれている。!= を ≠ にしたり、<-- を ← にしたりしてくれるんだけど、違和感ひどすぎてちょっとこれでコーディングしようという気には今はならない。 もしかしたら将来的には標準になるのかもしれないけど...
Windows ターミナル Cascadia Code | Microsoft Docs


参考
Windows 用 OpenSSH のインストール | Microsoft Docs