OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド
Windows向け公式のOpenSSHパッケージを利用すれば、クライアントとWindowsサーバー間の安全なファイル転送をSFTP(Secure FTP)プロトコルで簡単に実現できます。本記事では、Win32-OpenSSHを使用して、Windows 10およびWindows Server 2019/2016/2012 R2上でSFTPサーバーを稼働させる方法を詳しく解説します。
目次
- SFTPとは?
- WindowsにおけるSFTPの実装
- Windows 10 1803以降/Windows Server 2019へのWin32 OpenSSHのインストール
- Windows Server 2016/2012 R2へのWin32 OpenSSHのインストール
- WinSCPを使ったSFTP接続のテスト
- Win32 OpenSSHをアンインストールする方法
SFTPとは?
SFTP(Secure File Transfer Protocol、セキュアFTP、またはSSH FTP)は、SSHプロトコルを拡張したものであり、UNIX/Linux系システムでは標準的な技術です。利用者から見るとFTPに似ていますが、実際にはまったく別のプロトコルであり、FTPとの共通点はほぼありません。データはクライアントとサーバー間をSSHトンネル(TCPポート22)経由でやり取りされます。
SFTPの主なメリット:
- ファイルとコマンドが暗号化されたSSHセッション内で転送される
- ファイル送信とコマンド送信に1つの接続で対応できる
- シンボリックリンク、転送の一時停止・再開、ファイル削除などの機能をサポート
- FTPが遅延や失敗を起こしやすい回線でも、SFTPはより高速かつ安定して動作する傾向がある
- SSH鍵による認証が可能
注意:SFTPとFTPSを混同しないようにしましょう。FTPSは本質的にSSL証明書を追加しただけの通常のFTPですが、SFTPはSSHセッション内でFTP相当のデータやコマンドをやり取りするまったく異なるプロトコルです。
WindowsにおけるSFTPの実装
従来、Windows OSにはSFTPサーバーを稼働させるための標準機能が搭載されていませんでした。そのため、Core FTP、FileZilla、CYGWIN、OpenSSH、FTP Shell、IPSwitchといったオープンソースまたは商用ソリューションが利用されてきました。しかし数年前、MicrosoftはWin32向けのOpenSSHポートを独自にリリースしました。これがWin32-OpenSSHプロジェクトです。
ここでは、Win32 OpenSSHパッケージを使用して、Windows 10およびWindows Server 2019/2016/2012 R2上にSFTPサーバーを構築する手順を見ていきましょう。
Windows 10 1803以降/Windows Server 2019へのWin32 OpenSSHのインストール
Windows 10 ビルド1803以降およびWindows Server 2019では、OpenSSHパッケージがRSATと同様に「Feature on Demand(FoD)」としてOSに標準搭載されています。
次のPowerShellコマンドレットを実行すると、OpenSSHサーバーをインストールできます。
Add-WindowsCapability -Online -Name OpenSSH.Server*
または、DISMを使用する場合は次のコマンドです。
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0
GUIから追加することも可能です(設定 → アプリ → オプション機能 → 機能の追加 → OpenSSHサーバー → インストール)。

- OpenSSHの実行ファイルは次のディレクトリに配置されます:
c:\windows\system32\OpenSSH\ - sshd_config設定ファイルは次のディレクトリにあります:
C:\ProgramData\ssh(このディレクトリはsshdサービスの初回起動後に自動生成されます) - ログファイル:
c:\windows\system32\OpenSSH\logs\sshd.log - authorized_keysファイルや各種鍵は次のディレクトリに保存されます:
%USERPROFILE%\.ssh\
これで、Linuxの場合と同じようにSSH経由でWindows 10へ接続できるようになります。
Windows Server 2016/2012 R2へのWin32 OpenSSHのインストール
旧バージョンのWindows 10およびWindows Server 2016/2012 R2では、GitHub(https://github.com/PowerShell/Win32-OpenSSH/releases)からOpenSSHをダウンロードして手動でインストールする必要があります。Windows x64用パッケージOpenSSH-Win64.zip(約3.5MB)をダウンロードしてください。
- アーカイブを任意のディレクトリ(例:C:\OpenSSH-Win)に展開します。
- 管理者権限でPowerShellを起動し、OpenSSHフォルダへ移動します:
Cd C:\OpenSSH-Win - Path環境変数にOpenSSHディレクトリへのパスを追加します(システムのプロパティ → 「詳細設定」タブ → 環境変数 → システム変数のPathを選択・編集 → OpenSSHフォルダのパスを追加)。

- OpenSSHサーバーをインストールします:
.\install-sshd.ps1(「sshd and ssh-agent services successfully installed」という緑色のメッセージが表示されれば成功です)。
- サーバー用のSSHホスト鍵を生成します(sshdサービスの起動に必須):
ssh-keygen.exe –Assh-keygen: generating new host keys: RSA DSA ECDSA ED25519
- SSHDサービスの自動起動を有効化し、サービスを開始します:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd - コンピュータを再起動します:
Restart-Computer - PowerShellでWindowsファイアウォールのTCPポート22(着信SSHトラフィック用)を開放します:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
補足:古いWindowsクライアントOSでは上記コマンドが機能しない場合があります。その際は代わりに次のコマンドを使用してください。netsh advfirewall firewall add rule name='SSH Port' dir=in action=allow protocol=TCP localport=22 - 任意のテキストエディタでSSHD設定ファイル(C:\ProgramData\SSH\sshd_config)を開き、Subsystem sftpディレクティブの値を確認します。ここにはsftp-server.exeが指定されている必要があります。

さらに、sshd_config設定ファイルで以下のようなパラメータを追加設定することも可能です。
AllowGroups corp\sftp_users # このドメイングループに属するユーザーのみOpenSSHへの接続を許可
AuthenticationMethods password # パスワード認証を有効化(SSH鍵認証を無効化)
ForceCommand internal-sftp
ChrootDirectory C:\inetpub\wwwroot\ftpfolder # SFTPユーザーのデフォルトディレクトリを指定
WinSCPを使ったSFTP接続のテスト
構築したSSHサーバーにSFTPプロトコルで接続してみましょう。ここでは無料のWinSCPクライアントを使用します。
接続設定画面で、ファイル転送プロトコルとしてSFTPを選択し、サーバー名と接続に使用するWindowsアカウントの資格情報を入力します(鍵認証の設定も可能です)。

初回接続時には、「ホストキーがローカルキャッシュに見つかりません」という通知が表示されます。

すべて正常に設定されていれば、クライアントはSFTPサーバーへ接続し、ユーザーのホームディレクトリ(デフォルトではユーザープロファイルのフォルダ)内のファイル一覧が表示されます。
Total Commanderなどでお馴染みのファイルマネージャー形式のインターフェースを操作して、サーバーとクライアント間でファイルをコピーできます。ファイルはすべて安全なSFTP経由で転送されます。

Win32 OpenSSHをアンインストールする方法
システムからWin32 OpenSSHを正しくアンインストールする手順は以下の通りです。
- 管理者権限でPowerShellセッションを起動します。
- SSHDサービスを停止します:
Stop-Service sshd - sshdサービスをアンインストールします:
.\uninstall-sshlsa.ps1sshd successfully uninstalled ssh-agent successfully uninstalled
-
Windows 10でFTPサーバーを構築・管理する方法【初心者向け完全ガイド】
Windows 10にFTP(File Transfer Protocol)サーバーを構築すると、どこからでも自分のPCにファイルをアップロード・ダウンロードできるようになります。FTPサーバーは、いわば「自分が完全にコントロールできるプライベートクラウド」です。通信速度は契約しているインターネット回線に依存し、月間の転送量制限もありません。また、ファイルのサイズや種類による制限もないため、1KBの小さなバックアップファイルでも、1TBもの大容量データでも問題なく扱えます。アカウント数にも上限がないため、友人や同僚、家族と一緒にファイルを保存・共有することも可能です。 この記事では、Windo
-
SSHサーバーを使って動かなくなったWindows PCにアクセス・復旧させる方法
システムが突然クラッシュし、どんなコマンドにも応答しなくなることは珍しくありません。さらに困るのは、大事なファイルにアクセスしたいのにPCがまったく動かせない状態になってしまったときです。しかし、心配はいりません。SSHサーバーを活用すれば、不具合を起こしたWindows PCにもアクセスでき、事態を打開できる可能性があります。まずは、SSHについて簡単におさらいしておきましょう。SSHサーバーとは?SSH(Secure Shell)は、安全性の確保されていないネットワーク上でも、ネットワークサービスを安全に操作できるように設計された暗号化通信プロトコルです。代表的な用途としては、別のコンピュ