Windows 10 にインストールできるオプション機能のリストに、OpenSSH クライアントと OpenSSH サーバーのベータ版が埋もれています。 クライアントは Windows コマンド ラインからリモート SSH サーバーに直接接続でき、サーバーはリモート ユーザーに Windows 10 にリモートで接続させ、SSH 経由でコマンド プロンプトを表示させます。 Windows 10 の OpenSSH クライアントはインストールと使用が非常に簡単ですが、OpenSSH サーバーを起動し実行する方法を見つけ出すのは本当に大変でした。 しかし、今では、すべてを把握したので、以下の手順に従って、Windows 10 で動作する OpenSSH サーバー実装をインストールするのに10分もかからないでしょう。
Windows 10 OpenSSH サーバーのインストール
最初の手順は、Windows スタート メニュー () をクリックして、検索フィールドに option と入力します。 オプション機能の管理」と書かれた検索結果が表示されますので、これをクリックします。
この画面には、現在インストールされているWindowsのオプション機能がすべて表示されます。 ここで、上の赤い矢印で示された[機能の追加]ボタンをクリックします。 すると、インストール可能なオプション機能のリストが表示されます。 そのほとんどはフォント パックですが、下にスクロールすると、OpenSSH Server (Beta) という機能が表示されます。
OpenSSH Server (Beta) をインストールするには、それを選択しインストール ボタンをクリックするだけでよいのです。 インストール ボタンをクリックすると、リストからその機能が消えます。 これは正常であり、何も心配することはありません。 ウィンドウの左上にある戻る矢印をクリックすれば、インストールされた機能の リストに戻りますが、このとき OpenSSH Server (Beta) がインストールされている状態になっています。
これでこのウィンドウを閉じられます。
インストール後、sshd と sshd-agent という新しい Windows サービスが作成されて、関連ファイルが C:\WindowsSystem32↩OpenSSH フォルダーに格納されています。
インストールを完了するために、コンピューターを再起動します。
再ログイン後、sshdサービスは開始されず、開始しようとすると、Windowsはサービスを開始するために必要な権限がないことを報告します。
サービスに必要な不足特権は Replace a Process Level Token で、NT Servicesshd アカウントにそれを追加する必要がありました。 これを行うには、スタートメニューで secpol を検索し、表示されたローカルセキュリティポリシーの結果を選択して、ローカルセキュリティポリシーエディターを開きます。
ローカルセキュリティポリシーエディターが開いたら、ローカルポリシーを展開し、User Rights Assignmentを左クリックします。 ユーザー権限の割り当て]を選択すると、右ペインにさまざまな権限が表示されます。 プロセスレベルトークンの置き換え]特権が表示されるまで下にスクロールし、それをダブルクリックします。
ここで [Add User or Group] ボタンをクリックし、下図のように [Enter the object names to select] フィールドに NT Servicesshd を入力します。
完了したら、OKボタンをクリックして、この権限をsshdに渡します。 その後、OK ボタンを押してプロパティを閉じ、ローカル セキュリティ ポリシー エディターを閉じます。
特権を有効にしても、sshd サービスを開始しようとすると、Windows は「Windows はローカル コンピュータの sshd サービスを開始できませんでした」というエラーを表示します。 Error 1067: The Process terminated unexpectedly.”
If you look in the C:\Windows↪System32↩OpenSSH✾Logs✾sshd.Log を見てください。8028>
SSHD がこれらのエラーを表示しているのは、サーバーとクライアント間のトラフィックを暗号化するために使用するホスト鍵が生成されていないためです。 これらの鍵を作成するには、昇格したコマンドプロンプトから C:\WindowsSystem32㊞OpenSSH㊞ ssh-keygen.exe -A コマンドを実行して、鍵を C:\WindowsSystem32ⒸOpenSSH フォルダーに作成します。
ssh-keygen -Aコマンドを使うと、デフォルトの鍵ファイルのパス、空のパスフレーズ、鍵タイプのデフォルトビット、デフォルトコメントを使って鍵を生成します。 通常は、鍵にパスフレーズを追加しますが、現在バンドルされている Windows 10 バージョンの OpenSSH では、パスフレーズを追加しようとすると、ssh-keygen は “failed: invalid argument” エラーで応答します。
ssh-keygen で鍵を作成および保存が終了したら、上の図のようにコマンド プロンプトに戻されます。 exit と入力して Enter を押すと、昇格したコマンド プロンプトを終了できます。
残念ながら、まだ終わっていません。sshd サービスを開始しようとすると、Windows は再び「エラー 1067」で応答します。 これは、NT ServiceのsshdアカウントがC:㊦Windows㊤OpenSSH㊦host_ed25519_keyファイルへのアクセス権を持っていないためです。 これを解決するには、ssh_host_ed25519_keyファイルのプロパティに移動し、次の変更を行います。
- Change the owner of the file to NT Service
- Give the NT Service Only the Read permission to this file.
- Remove permissions for all users to this file.このファイルは、NT Serviceが所有権を所有しています。 たとえば、ログインしているアカウントにはパーミッションがあるので、これを削除する必要があります。
完了すると、ssh_host_ed25519_key ファイルのパーミッションは次のようになります:
パーミッションを正しく設定しないと、sshd サービスを開始できず、ログファイルに以下のエラーが表示されるようになります。
秘密鍵ファイルに適切なパーミッションを設定したら、再びsshdサービスを開始することができます。 ただし、今回は sshd サービスが開始され、コンピューターが接続できるようになります。
サービスが実行されているので、SSH で Windows 10 ボックスにリモート接続することが可能です。 以下は、Windows 10 コンピューターへ SSH 接続したときの例です。 PowerShell を含むすべてのコマンド ライン ツールを実行できる完全なコマンド プロンプトが表示されることに注目してください。
sshd サービスは自動 (Delayed Start) になっており、自動に設定されている他のサービスがすべて開始した後にこのサービスが Windows によって起動することを意味します。 したがって、コンピューターを再起動した後、OpenSSH サーバーが起動して接続できるようになるまでに数分かかることがあります。
Windows 10 で実行する OpenSSH サーバーを使用すると、コンピューターを管理する方法に柔軟性が追加されました。 OpenSSH Serverを有効にする場合、sshdがリッスンするポート22は、信頼できるIPアドレスからのみアクセスできることを確認してください
。