このページの本文へ

Windows Info 第101回

Windows 10でSSH(Secure Shell)サーバーを使う

2017年09月24日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

Anniversary Updateから
開発者モードで利用可になったSSHサーバー

 Windows 10のAnniversary Update(RS1)から、開発者モードをオンにすると、SSHサーバーが起動するようになっている。SSHとは「Secure Shell」の略で、ネットワークを介して、他のホストに接続して「シェル」を使うためのプロトコルだ。通信は暗号化されていて、ホストやサーバー認証も行なわれ、比較的安全にインターネット内で利用することができる。

 SSHでは、SSHサーバー側がネットワークからの接続を待ち、SSHクライアント側はネットワークを介して他のマシン上で動作しているSSHサーバーに接続する。接続すると、SSHクライアントプログラムのウィンドウに対するキーなどの文字入力は、サーバー側に送られ、サーバー側でシェルが動作、その応答(文字出力)がSSHクライアントプログラムのウィンドウ内に表示される。

SSHは、サーバーとクライアントのプログラムが通信し、サーバー側のシェル(WindowsならばCMD.EXE)をクライアント側のウィンドウ内で動作しているように見せる

 見た目的には、ローカルマシン上でコマンドプロンプトを動かしていると同じようにしか見えない。

 基本的には、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. プロパティを開く

SSH Server Brokerサービスを探し、右クリックメニューからプロパティを選択

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をインストールしてみることにする。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン