このページの本文へ

Windows Info 第102回

マイクロソフト版のOpenSSHをWindows 10にインストールする

2017年10月15日 10時00分更新

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

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

Anniversary Updateで動作環境が整った

 OpenSSHは、Secure Shellプロトコルを利用するためのオープンソースソフトウェア。OpenBSDプロジェクトが開発の中心を担う。このOpenSSHには、SSHクライアント/サーバーの両方が含まれるが、GUIアプリではなく、コンソールウィンドウの中で実行するコマンドラインプログラムである。

 OpenSSHは以前より存在していてWindowsでも利用できたのだが、Windows側に問題があってSSHクライアントとしての利用が制限されていた。

 というのも、Windows 8まではコンソールウィンドウ内のエクスケープシーケンスがサポートされておらず、たとえばLinuxマシンに接続したとしても、Linuxアプリケーション側からは、画面制御が行えない「ダム端末」として使わざるをえず、たとえばスクリーンエディタなどを使うことができなかった。

 しかし、Windows 10 Ver.1607(RS1、Anniversary Update)でWindows Subsystem for Linuxが導入されたとき、Windowsのコンソールウィンドウでエスケープシーケンスが利用できるようになった。このためにOpenSSHを使って、Windows 10からLinuxなどのスクリーンエディタの利用が可能になった。さらにはOpenSSHをサーバーとしてもクライアントとしても利用できる。ここでは、OpenSSHのインストールについて解説する。

実際にダウンロードとインストールを行なう

 マイクロソフトが移植を行なったOpenSSHは、以下のURLから実行バイナリを入手可能だ。

https://github.com/PowerShell/Win32-OpenSSH/releases

 配布はZIP圧縮ファイルで、その中に必要な実行ファイルなどが含まれている。32bit版、64bit版、デバッグ用のシンボル付き、シンボルなしといったファイルがあるが、通常はシンボルなしの「OpenSSH-Win32.zip」または「OpenSSH-Win64.zip」のどちらかを選ぶ。前者は32bit版、後者は64bit版である。各自の実行環境に合わせて選択する。

 適当なフォルダを作ってその中でZIPファイルを解凍すれば、インストール自体は終了する。ただし、OpenSSHではインストール先フォルダ内に必要な情報をファイルとして保存するため、書き込み制限のあるフォルダーには置かないほうがよい。

 また、Program FilesやProgram Files(x86)フォルダには、書き込み制限がかけられていて、かつ過去のアプリケーションとの互換性のためにフォルダ仮想化の仕組みが働くため、ファイルが別の場所に置かれてしまう。そうなると、システムの移行時などに必要なファイルを探さねばならなくなる。

 なので本記事では、わかりやすくCドライブのルートフォルダーに「OpenSSH」というフォルダ(C:\OpenSSH)を作り、そこにインストールすることにする。もちろん、自由にフォルダを設定してかまわないが、その場合には、以下のコマンドなどで指定されているパスを自分の環境に合わせて書き換えて使用していただきたい。

 設定は、サーバーを動かす場合にのみ必要だが、Windowsマシンであっても、サーバーを動かす価値はある。ルーターのファイアウォール機能などを正しく設定すれば、インターネット側からでもアクセスが可能だし、ローカルネットワークでも、コマンドラインで済むような仕事ならいちいちリモートデスクトップを開いたり、他のマシンの前へ移動する必要もない。

 万が一、Windowsがマウスで操作できなくなっても、SSHによるリモートログインは動作できる可能性があり、コマンドラインからtasklist、taskkillコマンドで問題のあるプログラムを終了させることで、再び操作できるようになる可能性もある。これは、従来ならWindows付属のtelnetサーバーで同様のことが可能だったのだが、このtelnetでは、平文パスワードかNTLM認証しかなかったため、外部に持ち出すマシンに設定するのはセキュリティ上の問題があった。しかし、OpenSSHならば、セキュリティ上の問題も軽減できる。

 もちろん、開発者モードをオンにすると自動的に動き出すServer Broker版のSSHサーバーを使ってもいいのだが、情報がなく、たとえばクライアントの公開鍵をサーバーに登録する方法さえわからない(そもそも可能なのかどうかを含めて)。なので、SSHサーバーを動作させるならOpenSSHに切り替えた方がいいだろう。

OpenSSHを設定する前にしておくこと

 まず、「設定」→「更新とセキュリティ」→「開発者向け」で「開発者モード」を選択する。

開発者モードをオンにする。OpenSSHには直接関係ないが、開発者モードをオンにすることでPowerShellの実行ポリシーの設定がGUIからできるようになる

 これにより、GUIを使ってPowerShellの実行ポリシー切り替えが可能になる。そして、前回の記事を参考にしてServer Broker版のSSHサーバーを停止(開発者モードがオンの場合)させ、状態を「無効」として起動しないようにする。なお、Future Updateを適用するとServer Broker版のSSHサーバーの状態が「手動」に切り替わり、起動される場合があるので注意すること。

 また、MS版OpenSSHでは、設定にPowerShellを使う。このため、PowerShellの実行ポリシーを変更してローカルファイルの実行に、署名のないスクリプトファイルを利用できるようにする必要がある。「開発者向け」には、「PowerShell」という項目があり、ここに「署名せず……」というチェックボックスがある。

「設定」→「更新とセキュリティ」→「開発者向け」にある「PowerShell」の「適用」ボタンを押して、PowerShellの実行ポリシーを変更する

 この下にある「適用」ボタンを押しPowerShellがローカルファイルを署名なしで実行できるようにする。

 次に設定を確認する。それには、PowerShellを起動し、「Get-ExecutionPolicy -List」を実行する。「Current User」の横に「RemoteSigned」と表示されればOKである。

PowerShellを起動して「Get-ExecutionPolicy -List」コマンドの実行結果で「Current User」の右側が「RemoteSigned」になっていればOK

 なお、同じことは手動でも設定可能だ。それには、Win+Xキーで開くメニューやスタートメニューからPowerShellを管理者権限で起動し、以下のコマンドを実行させる。

実行ポリシーの変更を手動で行うなら、「Set-ExecutionPolicy」コマンドを使う。結果のチェック方法は同じ

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

 この「RemoteSigned」とは、ネットワーク経由でのスクリプトファイルの実行には、署名がつけられている必要があるが、ローカルのスクリプトファイルでは署名が不要という意味だ。

 次にコマンドラインから使いやすいように、OpenSSHをインストールしたパスをPath環境変数に登録する。このようにすることで、コマンドプロンプトウィンドウでは、フルパスを設定することなく、OpenSSHのコマンドが実行可能になる。

 「コントロールパネル」→「システム」→「システムの詳細設定」→「環境変数ボタン」で、環境変数のダイアログボックスを表示させる。2つのリストがあるが、上がユーザー個人の環境変数設定、下がシステム全体の環境変数設定である。

 複数のユーザーアカウントからOpenSSHを使う可能性を考え、下の「システム環境変数」で「Path」を選択して「編集」ボタンを押す。Path環境変数に登録されている実行ファイルのサーチパスがリスト形式で表示されるので、「新規」ボタンを押して、OpenSSHのインストールパス(C:\OpenSSH)を入力する。

 これで、OpenSSHのパスが設定され、以後、開くコマンドプロンプトウィンドウでは、OpenSSHコマンドを呼び出すことができる。基本的には、この状態でOpenSSHクライアントであるssh.exeが実行できるようになる。簡易な使い方としては、接続先のIPアドレスやLAN内のホスト名を引数にして

ssh PC1

などとすることで、SSHサーバーの動作している他のマシンに接続できる。

パス設定をすれば、SSHクライアントであるssh.exeの実行が可能になる

 ここまででとりあえず、クライアントが動作するようになったので、次回はサーバー側の設定を解説する。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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