いつでも使えるsshdサーバ on WSL

このところ結構頻繁にWSL(Windows Subsystem for Linux)関連の開発情報が公開されている。MicrosoftはWSLを開発対象と捉え、今後も積極的に開発リソースを投入していくようだ。WindowsでUNIX系環境を使いたい開発者にとってこれは嬉しいことだと言える。次のアップデートがいつになるのかはわからないが、今後のリリースにこうした機能が取り込まれることになれば今よりもすごく便利な状況になる。

最近では「Announcing Windows 10 Insider Preview Build 17063 for PC」において、開発段階にあるWindows 10 Insider Preview Build 17063でsshdを独立して利用できるようにしたと報告があった。これはWSLを使っていこうと考えているすべてのユーザーにとって朗報だ。

Windows 10 Fall Creators Updateの段階でもWSLのUbuntuでsshdサーバを起動させれば、外部からsshを使ってUbuntu on WSLにログインすることができる。しかし、これはUbuntuのコンソールターミナルが少なくとも1つは立ち上がっている必要があり、そこでsshdを起動させておく必要がある。起動しておかないと、次のような感じで当然ながら接続できない。

Ubuntu on WSLのコンソールターミナルを少なくとも1つは起動しておかないとsshdは動作してくれない

最近WSL関連でバックグラウンドタスク機能が実装されたことはcronを取りあげたときに紹介した。この機能を使うことでsshdを自動的に起動させておくことができるようになったようだ。こうすることでコンソールターミナルを起動していない状態でもsshdを実行させておくことができ、外部からssh経由でログインできるということだ。

知らない方も多いんじゃないかと思うが、Windows 10 Fall Creators Updateではベータ版だがWindowsネイティブなsshおよびsshdが導入できるようになっている。これを使えばWindows 10のコマンドプロンプトやPowerShellからssh接続できるのだ。これはなかなか魅力的な状況である。

Windowsネイティブなsshを有効にする方法

というわけで、Windowsネイティブなsshクライアントをインストール(有効化)する方法を紹介しておこうと思う。有効化は設定アプリケーションからできる。設定アプリケーションを起動し、「アプリと機能」を選択したら、表示されるページから「オプション機能の管理」をクリックする。

「設定アプリケーション」→「アプリと機能」→「オプション機能の管理」をクリック

「機能追加」からOpenSSH Clientを選択してインストールする。インストールが完了すると次のような感じで「OpenSSH Client (Beta)」がリストに表示される。

インストールされたOpenSSH Client (Beta)

ここでいったんシステムを再起動すると、コマンドプロンプトやPowerShellでsshコマンドが利用できるようになる。あとは通常のsshの使い方と同じだ。

Windowsでネイティブに使用できるsshコマンド

WSLとの関連性は不明だが、MicrosoftはUbuntuでよく使われるコマンドやAPIをWindowsにマージする取り組みを進めている。Windows 10 Insider Preview Build 17063ではbsdtarとcurlがWindowsネイティブなコマンドとして移植されたし、UNIXソケットもAPIとしてカーネルドライバに取り込まれたようだ。macOSほどとはいかないだろうが、今後のWindows 10はネイティブに使えるコマンドが増えることにもなりそうだ。今後の展開が楽しみだ。