Windows Terminal で SSH
Windows Terminal のインストール
Windows Terminal がバージョン1になりまして、めでたいという事で Windows Terminal でSSHができるように設定してみた。
Windows Terminal は Microsoft Store アプリからインストール可能で、「Windows Terminal」で検索すればすぐに出てくるのでインストールすればインストール完了。
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