Anniversary Updateから
開発者モードで利用可になったSSHサーバー
Windows 10のAnniversary Update(RS1)から、開発者モードをオンにすると、SSHサーバーが起動するようになっている。SSHとは「Secure Shell」の略で、ネットワークを介して、他のホストに接続して「シェル」を使うためのプロトコルだ。通信は暗号化されていて、ホストやサーバー認証も行なわれ、比較的安全にインターネット内で利用することができる。
SSHでは、SSHサーバー側がネットワークからの接続を待ち、SSHクライアント側はネットワークを介して他のマシン上で動作しているSSHサーバーに接続する。接続すると、SSHクライアントプログラムのウィンドウに対するキーなどの文字入力は、サーバー側に送られ、サーバー側でシェルが動作、その応答(文字出力)がSSHクライアントプログラムのウィンドウ内に表示される。
見た目的には、ローカルマシン上でコマンドプロンプトを動かしていると同じようにしか見えない。
基本的には、SSHの利用はコマンドラインが基本。Windowsで使う場合には、cmd.exeが起動し、その中から必要に応じてコンソールプログラムやコマンドを利用したり、Powershellなどのコマンドラインコンソールに対応した言語などを用いる。
技術的には、startコマンドなどを使うことで、GUIを持つWindowsデスクトップアプリケーションを起動できるが、そのウィンドウは、リモート側(SSHサーバー側)に表示されてしまうので、操作を行なっているSSHクライアント側からは操作できない。
以前は、telnetやrloginといったプロトコルが使われていたが、これらは暗号化などの機能がプロトコル自体になく、ローカルネットワークでの利用が前提だった。しかし、現在ではローカルネットワークであっても、通信ポートに誰でも接続できるようにしてしまことはセキュリティ上問題があると判断され、SSHが利用されることが大半になった。このSSHプロトコルを実際のプログラムとしたのがOpenSSHで、OpenBSDプロジェクトが開発を進めている。
Windows 10の開発者モードのSSHサーバー
Windows 10の開発者モードで動作するのは、マイクロソフトが独自に開発した(と思われる)SSHサーバーだ。ただし、SSHであること、Windows 10 IoTでの利用が説明されているだけで、このSSH実装に関するドキュメントは公開されておらず、また、特に設定プログラムなども用意されていない。
ハッキリしているのは、Windows 10(Desktop、Mobile、IoT)で開発者モードをオンにすると、SSH関連の2つのサービス(SSH Server Broker、SSH Server Proxy)が起動するようになるということだ。とりあえず、このSSHをサービス名から「Server Broker版」とよび、OpenSSHなどと区別することにする。
このServer Broker版SSHは、サーバー側しか用意されておらず、利用するには、別途クライアントを用意する必要がある。開発モードに関する文書には、「This is not Microsoft's OpenSSH implementation, which you can find on GitHub.(これは、マイクロソフトのOpenSSH実装ではない。それはGitHubにある)」と書かれていて、OpenSSHではないことはわかる。
またこの文書には、OpenSSHなどを使う場合には他のポートを使え、SSHサーバーを無効にするには開発者モードをオフにしろといったことしか書いてない。
もう1つ、Server Broker版では「設定」→「更新とセキュリティ」→「開発者向け機能」にある「デバイスの検出」(Device Discoverly)を使ってペアリングをSSH PINで行なうとの表記がある。このあたりもドキュメントがないが、このあたりで拡張が行なわれている可能性もある。たとえば、過去にWindowsに付属していたtelnetサーバー、クライアントには、NTLM認証の機能が追加されていた。
ドキュメントには、何も書かれていないが、開発者モードと連動していることから、なんらかの開発に関わる可能性がある。しかし、OpenSSHなどを利用したい場合、このServer Broker版SSHサーバーを止めないと、標準ポートを利用できない。
Server Broker版SSHサーバーを停止するには、サービスを停止する。その手順は以下のようになる。
1. 「コントロールパネル」→「管理ツール」→「サービス」を開く
2. SSH Server Brokerサービスを探す
3. プロパティを開く
4. 「スタートアップの種類」を「無効」にする
5. すでに実行中なら「サービスの状態」で「停止」ボタンを押す
6. OKで抜ける
なお、SSH Server Proxyは、SSH Server Brokerに依存しているため、Brokerサービスが停止すれば、一緒に停止して単独で動作することがない。このため、スタートアップでSSH Server Brokerだけを無効にしておけばよい。
開発者モードにしてServer Broker版SSHサーバーを停止してみたが、少なくとも、Visual Sutdioのリモートデバッグには無関係で影響はないようだ。ただし、Windows 10 IoTやWindows 10 Mobileなどの開発を行なっている場合などに影響が出る可能性もあるので、開発関係の動作をチェックしておいたほうがいいだろう。
また、Server Broker版は、サーバー側のみの提供なので、開発者モードがオンになっていても、他のマシンにSSHで接続するクライアントだけを動かしている場合には、停止させる必要はない。
Windows用のOpenSSHは2種類ある
Windows用のOpenSSHには、2つのバイナリがある。1つは、マイクロソフト自身による実装「PowerShell/Win32-OpenSSH」(以下、MS版)で、GitHubで公開されている。ただし、このバイナリをインストールするには、PowerShellから操作を行なう必要があり、スクリプトを実行できるようにPowerShellを準備しておく必要がある。
もう1つのバイナリは、mls-software.comで配布されている「OpenSSH for Windows」(以下、mls版)である。こちらは、Windowsインストーラーを使い、GUIベースで通常のアプリのようにインストールできる。
現時点ではどちらもOpenSSH 7.5p1をベースにしており、SSHとしての機能は同等といえる。インストール作業をPowerShellで行なう必要があるがマイクロソフト自身による移植となるMS版と、通常アプリと同じくGUIでインストールできるサードパーティによるmls版の2つがあるというわけだ。
ただし、mls版は、Windows上でUnixと同等の環境を作るCygwinをベースにしたもので、どちらかというと古い実装方法だ。一部制限があるようなので、新規にインストールするのであれば、MS版をお勧めする。
というわけで次回は、MS版OpenSSHをインストールしてみることにする。
この連載の記事
-
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 - この連載の一覧へ