Windows TerminalにSSH接続を追加する

2020年8月12日WindowsWindows

Microsoftは、従来のコマンドプロンプト(cmd.exe)に代わる新たなターミナルソフト、「Windows Terminal」というアプリを公開しています。

cmd.exeに比べてとても使い勝手がよいため、最近私はcmd.exeの代わりにWindows Terminalを常用しています。また、Windows Terminalは、設定を行えばPowerShell Core (PowerShell7)やWSL2のUbuntuが使用できます。

このウェブサイトを管理するとき、今まではRLoginというソフトを使ってウェブサーバー(さくらのVPS)にログインしていたのですが、今回、RLoginの代わりにWindows Terminalを使うよう設定してみました。

話の前提

さくらのVPSへは、SSHを使って鍵認証でログインする形で接続しています。

今まで私はRLoginというソフトを使ってSSH接続していました。皆さんはTeraTermやPuTTYなどのターミナルソフトをご利用かもしれません。

今回は、RLoginなどのソフトからWindows Terminalに乗り換える、という前提で話を進めます。つまり、Webサーバー側はSSHで鍵認証ログインできるように設定できており、手元のパソコンに鍵ファイルがある、という前提です。

また、Windows TerminalはMicrosoftストアからインストールできます。まだ持っていない方は、こちらからインストールしてください。

OpenSSHが入っているか確認する

まず、Windowsにsshコマンドがあるか確認します。

Windows 10のバージョン1803(2018年4月版)以降、標準でOpenSSHがインストールされているらしいです。まず、それが存在するか確認しておきます。

コマンドプロンプトからwhere sshsshを実行してみます。

c:\>where ssh
C:\Windows\System32\OpenSSH\ssh.exe

c:\>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]
sshが入っているか確認します

私のパソコンにも、OpenSSHがインストールされているようです。

sshコマンドを確認する

Windows Terminalの設定を行う前に、sshコマンドでさくらのVPSに接続できるか確認してみます。

最低限、接続先のホスト名(IPアドレス)を指定してssh 123.45.67.89のような感じで接続できますが、おそらくセキュリティーのためにポートを変更したり鍵認証を使っていたりすると思います。それらを含めると、ssh user@host -p port -i id_file_pathという形式になります。ついでに、SSH接続が切断されないようにKeepAliveパケットを送るため、-o ServerAliveInterval=60という引数も足しておきます。

これを実行すると、鍵ファイルのパスフレーズを聞かれますので、入力します。

c:\>ssh username@123.45.67.89 -p 12345 -i "C:\path\to\.ssh\id_rsa" -o ServerAliveInterval=60
Enter passphrase for key 'C:\path\to\.ssh\id_rsa': パスフレーズを入力
  ↓ログインできると、接続先サーバーのプロンプトが表示される
Last login: Tue Aug 11 11:44:49 2020 from ***.***.***.***
[username@host ~]$

ちゃんと相手サーバーにログインできて、プロンプトが表示されたらOKです。後ほど、このコマンドをWindows Terminalに設定します。

ちなみに、鍵ファイルのファイルパスに2バイト文字(日本語)が含まれるとダメなようです。英数字だけからなるファイル名・フォルダ名で保存しておいてください。

Windows Terminalの設定

2021/07/03追記:
本記事は、古いWindows Terminalに合わせて執筆したため、JSONファイルを直接いじってプロファイルを追加しています。現在、Windows Terminalのバージョンが上がって設定画面が用意され、プロファイルの追加もGUIから行えるようになりました。

このページにたどり着くような方は、下記のJSONファイルの設定内容と、現在の設定画面の対応関係が分かると思いますので、ひとまずこのまま置いておきます。時間があるときに現在の設定方法で記事を書き直す予定です。

Windows Terminalに、さくらのVPSへ接続するプロファイルを設定します。

Windows Terminalのタブ欄の「v」マークから「設定」を開きます。

Windows Terminalの設定を開きます

すると、何らかのテキストエディターでsettings.jsonファイルが開かれると思います。(私の場合はVisual Studioが開きました)

“list":[ ]の中に、既存のプロファイルがいくつかあると思いますので、その並びにSSH接続のプロファイルを書き足します。

"list" :
[
    {
        //既存のプロファイル
    },    //←カンマを書き足す
    {
        "name": "さくらのVPS",
        "commandline": "ssh username@123.45.67.89 -p 12345 -i \"C:\\path\\to\\.ssh\\id_rsa\" -o ServerAliveInterval=60",
        "hidden": false,
        "icon": "C:\\path\\to\\Pictures\\Images\\sakura-vps.png",
        "backgroundImage": "C:\\path\\to\\Pictures\\Images\\sakura-vps.png",
        "backgroundImageAlignment": "bottomRight",
        "backgroundImageOpacity": 0.3,
        "backgroundImageStretchMode": "none"
    } //書き足し終わり
]
プロファイルを書き足します

最低限必要な設定は、最初の二つです。

  • name:任意の名前を指定します。タブ欄の「v」を押したときの一覧に表示されます。
  • commandline:上記でコマンドプロンプトからsshコマンドを打って接続の確認をしましたが、そのsshコマンドをダブルクォートでくくって記載します。
  • icon:タブ欄に表示されるアイコンを指定したい場合、ここにアイコンのファイルパスを指定します。
  • backgroundImage~:このプロファイルで起動したときの背景画像を指定したい場合、これらの項目でファイルパスや表示設定を行います。

なお、json形式の文字列では、ダブルクォートや円マークを円マークでエスケープする必要がありますので気をつけてください(Visual Studioでは、コピペしたときにある程度整形してくれます)。また、iconやbackgroundImageの設定の詳細は、参考サイトをご覧ください。

記載が終わったら、setting.jsonを上書きします。上書きすると、直ちにWindows Terminalに設定が反映されます。フォーマットが間違っていたりするとエラーがでますので、setting.jsonを見直してください。

うまくいくと、次の画像のように、タブ欄の「v」を押すと、追加したプロファイルが出てくるはずです。

SSH接続のプロファイルが追加されました

クリックしたら鍵認証のパスフレーズを聞かれると思います。パスフレーズを入力して正しく接続できたら設定完了です。

参考サイト

settings.jsonファイルの書き方の詳細は、こちらのサイトをご覧ください。