Windows2016にOpenSSHを導入して、
・指定ユーザからのみアクセス可能
・特定のディレクトリのみ表示して上の階層は表示させない
・SFTPコマンドのみ使用可能とし、他のコマンド操作はさせない
上記条件を満たすようにsshd_configを設定してみました。
1.GitHub の PowerShell/Win32-OpenSSHにアクセスする
https://github.com/PowerShell/Win32-OpenSSH/releases
2.OpenSSH-Win64.zip をダウンロード
(2020/02/29 時点では v8.1.0.0p1-Beta が最新Ver)

3.所定のフォルダに展開して配置する
(ここでは、C:\直下を展開先として指定し、C:\OpenSSH-Win64 に配置します)


4.システム環境変数のPATH に C:\OpenSSH-Win64 を追加
マイコンピュータを右クリック>プロパティ>システムの詳細設定>環境変数をクリック
システム環境変数のPathを選択して編集を押し、新規を押して、C:\OpenSSH-Win64 を追加

5.管理者権限でコマンドプロンプトを開いてPoweshellプロンプトを表示
cd C:\OpenSSH-Win64
powershell
6.Powershellの実行権限を変更
Set-ExecutionPolicy RemoteSigned
7.Powershellの実行権限を確認
Get-ExecutionPolicy
RemoteSignedと表示されることを確認
8.sshのインストールスクリプトの実行
cd C:\OpenSSH-Win64
install-sshd.ps1
「sshd and ssh-agent services successfully installed」
と表示されれば成功

9.WindowsFirewallでPort22をOpenする
New-NetFirewallRule -Name sshd -DisplayName ‘OpenSSH Server (sshd)’ -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

10.WindowsFirewallでルールが追加されていることを確認する
スタート>Windows管理ツール>セキュリティが強化されたWindowsファイアウォール
受信の規則

9.sshdサービスの自動起動設定
スタート>Windows管理ツール>サービス を開き、
下記2サービスを自動起動、開始にする
OpenSSH SSH Server
OpenSSH Authentication Agent

10.SFTP用ユーザの作成
Usersグループ所属でsftp_testを作成


11.アップロード用フォルダの作成とNTFSアクセス権の設定
C:\upload フォルダを作成し、Usersグループに変更と書き込みの権限を付与します

12.sshd_config設定変更
C:\ProgramData\ssh\sshd_configを下記のように修正します
#SSH接続を経由して、他のサーバに転送通信をできなくする
AllowTcpForwarding no
AllowStreamLocalForwarding no
#rootでのログインを許可しない(Windowsでは無効)
PermitRootLogin no
#administratorグループの接続を拒否し、sftp_testユーザの接続のみを許可する
DenyGroups administrators
AllowUsers sftp_test
#ユーザsftp_testにマッチすれば、C:\uploadをルートディレクトリとして以上の階層を表示しない
#sftpコマンドのみ使用できるようにする
Match User sftp_test
ChrootDirectory C:/upload
ForceCommand internal-sftp
修正が済んだら、
OpenSSH SSH Server
を再起動
13.接続テスト


SFTP接続が出来てファイルの書き込みが出来ることが確認できました。