Windows 10 / Windows Server 2019に標準搭載されたOpenSSHサーバーでSSH接続を構築する方法
Windows 10(バージョン1809以降)およびWindows Server 2019には、OpenSSHベースのSSHサーバーが標準機能として組み込まれています。本記事では、Windows 10にOpenSSHサーバーをインストールして構成し、Linuxと同じように暗号化されたSSHプロトコル経由でリモート接続する方法を詳しく解説します。
なお、それ以前のバージョンのWindowsにもOpenSSHサーバーを導入することは可能ですが、その場合はGitHub(https://github.com/powershell/Win32-OpenSSH)からWin32版OpenSSHを手動でダウンロードしてインストールする必要があります。Win32-OpenSSHのインストールおよび設定手順については、「WindowsにSFTPサーバー(SSH FTP)をインストール&設定する方法」の記事を参照してください。
目次
- WindowsにOpenSSHサーバーをインストールする方法
- Windows 10 / Windows Server 2019でのSSHサーバーの設定
- OpenSSHサーバーの設定ファイル(sshd_config)
- Windows 10へSSHで接続する方法
WindowsにOpenSSHサーバーをインストールする方法
ここでは、Windows 10 1903へのOpenSSHサーバー機能のインストール手順を見ていきます(Windows Server 2019でも手順は同じです)。
OpenSSHパッケージ(RSATと同様)は、これらの(およびそれ以降の)WindowsバージョンではFeature on Demand(FoD)として追加されています。
インターネットに直接接続できる環境であれば、PowerShellで次のコマンドを実行してOpenSSHをインストールできます:
Add-WindowsCapability -Online -Name OpenSSH.Server*
またはDISMを使用します:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0
また、「設定」画面からもインストール可能です(アプリ → アプリと機能 → オプション機能の管理 → 機能の追加)。一覧からOpenSSH サーバーを探して「インストール」をクリックしてください。

OpenSSHサーバーが正しくインストールされたかどうかを確認するには、次のコマンドを実行します:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'
State : Installed

Windows 10 / Windows Server 2019でのSSHサーバーの設定
WindowsにOpenSSHサーバーをインストールした後は、sshdサービスのスタートアップの種類を「自動」に変更し、サービスを開始します。PowerShellで以下のコマンドを実行してください:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

netstatコマンドを使って、SSHサーバーがTCPポート22で接続を待ち受けていることを確認します:
netstat -na| find ":22"

さらに、Windows DefenderファイアウォールがTCPポート22への受信接続を許可していることも確認しておきましょう:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled
Name DisplayName Description Enabled ---- ----------- ----------- ------- OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

ルールが無効になっている場合(Enabled=False)や存在しない場合は、New-NetFirewallRuleコマンドレットで新しい受信ルールを作成できます:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
デフォルトでは、重要なOpenSSHコンポーネントは以下のフォルダに配置されます:
- OpenSSHサーバーの実行ファイル:
C:\Windows\System32\OpenSSH\ - sshd_configファイル(初回サービス起動後に作成される):
C:\ProgramData\ssh - OpenSSHのログ:
C:\windows\system32\OpenSSH\logs\sshd.log - authorized_keysファイルと各種キー:
%USERPROFILE%\.ssh\
なお、OpenSSHのインストール後には、コンピューター上に新しいローカルユーザー(sshd)が自動的に作成されます。
OpenSSHサーバーの設定ファイル(sshd_config)
OpenSSHサーバーの各種設定は、%programdata%\ssh\sshd_configファイルで変更できます。
例えば、特定のドメインユーザーアカウント(またはすべてのドメインユーザー)によるSSH接続を拒否したい場合は、ファイルの末尾に以下のディレクティブを追加します:
DenyUsers woshub\admin@192.168.1.10 DenyUsers corp\*
特定のドメイングループのみにSSH接続を許可する場合:
AllowGroups woshub\sshadmins
ローカルグループに対してアクセスを許可することもできます:
AllowGroups sshadmins
管理者権限を持つアカウントへのアクセスを拒否することも可能です。この場合、SSHセッション内で特権操作が必要になったときはrunasを使用する必要があります。
DenyGroups Administrators
以下のディレクティブにより、RSAキーとパスワードを使用したSSHアクセスが有効になります(RSAキーを使ったWindowsへのSSHアクセス方法については、次回の記事で詳しく解説します):
PubkeyAuthentication yes PasswordAuthentication yes
また、sshd_configファイルのPortディレクティブを変更すれば、OpenSSHが接続を受け付けるポート番号を変更することもできます。

sshd_configファイルに変更を加えた後は、sshdサービスの再起動が必要です:
restart-service sshd
Windows 10へSSHで接続する方法
これで、SSHクライアント(筆者はPuTTYを使用していますが、Windows標準のSSHクライアントでも問題ありません)からWindows 10への接続を試すことができます。
初回接続時には、接続先ホストを既知のSSHホストのリストに追加するかどうかを尋ねる標準的なメッセージが表示されます。

「はい」をクリックし、WindowsユーザーアカウントでWindows 10にログオンします。

SSH接続が成功すると、プロンプト付きのcmd.exeシェルが起動します。
admin@win10pc C:\Users\admin>

このコマンドプロンプトから、さまざまなコマンド、スクリプト、アプリケーションを実行できます。

筆者はPowerShellコンソールで作業するのが好みです。起動するには、次のコマンドを実行します:
powershell.exe

OpenSSHのデフォルトシェルをcmd.exeからPowerShellに変更したい場合は、次のPowerShellコマンドでレジストリを書き換えます:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

SSH接続を再確立し、PowerShellがデフォルトのSSHシェルとして使用されていることを確認しましょう(PS C:\Users\admin>と表示されれば成功です)。

SSHセッション内でPowerShellコンソールが起動し、タブ補完、PSReadLineによる色分け表示、コマンド履歴など、おなじみの便利な機能がそのまま利用できます。さらに、現在のユーザーがローカルのAdministratorsグループのメンバーであれば、UACが有効になっている場合でも、セッション内のすべてのコマンドが昇格された権限で実行される点も見逃せません。
-
Omegleで「サーバーへの接続中にエラーが発生しました」と表示される場合の対処法
Omegleは、世界中の見知らぬ相手とビデオチャットができるチャットルームサービスで、同種のサービスの中でも最も成功したウェブサイトの一つと言われています。しかしこのサイトでは、「Error connecting to server(サーバーへの接続中にエラーが発生しました)」というエラーメッセージが表示され、サービスをまったく利用できなくなる問題が依然として報告されています。この問題は比較的簡単に解決でき、世界各地にさまざまな対処法が存在します。ここでは、その中でも特に効果が実証されている方法を厳選してご紹介します。Omegleでサーバー接続エラーが発生する原因とは?このエラーの主な原因の一
-
SSHサーバーを使って動かなくなったWindows PCにアクセス・復旧させる方法
システムが突然クラッシュし、どんなコマンドにも応答しなくなることは珍しくありません。さらに困るのは、大事なファイルにアクセスしたいのにPCがまったく動かせない状態になってしまったときです。しかし、心配はいりません。SSHサーバーを活用すれば、不具合を起こしたWindows PCにもアクセスでき、事態を打開できる可能性があります。まずは、SSHについて簡単におさらいしておきましょう。SSHサーバーとは?SSH(Secure Shell)は、安全性の確保されていないネットワーク上でも、ネットワークサービスを安全に操作できるように設計された暗号化通信プロトコルです。代表的な用途としては、別のコンピュ