Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド

Windows向け公式のOpenSSHパッケージを利用すれば、クライアントとWindowsサーバー間の安全なファイル転送をSFTPSecure 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とは?

SFTPSecure File Transfer Protocol、セキュアFTP、またはSSH FTP)は、SSHプロトコルを拡張したものであり、UNIX/Linux系システムでは標準的な技術です。利用者から見るとFTPに似ていますが、実際にはまったく別のプロトコルであり、FTPとの共通点はほぼありません。データはクライアントとサーバー間をSSHトンネル(TCPポート22)経由でやり取りされます。

SFTPの主なメリット:

  1. ファイルとコマンドが暗号化されたSSHセッション内で転送される
  2. ファイル送信とコマンド送信に1つの接続で対応できる
  3. シンボリックリンク、転送の一時停止・再開、ファイル削除などの機能をサポート
  4. FTPが遅延や失敗を起こしやすい回線でも、SFTPはより高速かつ安定して動作する傾向がある
  5. 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を使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド

  • 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)をダウンロードしてください。

  1. アーカイブを任意のディレクトリ(例:C:\OpenSSH-Win)に展開します。
  2. 管理者権限でPowerShellを起動し、OpenSSHフォルダへ移動します:Cd C:\OpenSSH-Win
  3. Path環境変数にOpenSSHディレクトリへのパスを追加します(システムのプロパティ → 「詳細設定」タブ → 環境変数 → システム変数のPathを選択・編集 → OpenSSHフォルダのパスを追加)。OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド
  4. OpenSSHサーバーをインストールします:.\install-sshd.ps1(「sshd and ssh-agent services successfully installed」という緑色のメッセージが表示されれば成功です)。OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド
  5. サーバー用のSSHホスト鍵を生成します(sshdサービスの起動に必須):
    ssh-keygen.exe –A
    ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド
  6. SSHDサービスの自動起動を有効化し、サービスを開始します:
    Set-Service -Name sshd -StartupType 'Automatic'
    Start-Service sshd
  7. コンピュータを再起動します:
    Restart-Computer
  8. PowerShellでWindowsファイアウォールのTCPポート22(着信SSHトラフィック用)を開放します:New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSHOpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド
    補足:古いWindowsクライアントOSでは上記コマンドが機能しない場合があります。その際は代わりに次のコマンドを使用してください。netsh advfirewall firewall add rule name='SSH Port' dir=in action=allow protocol=TCP localport=22
  9. 任意のテキストエディタでSSHD設定ファイル(C:\ProgramData\SSH\sshd_config)を開き、Subsystem sftpディレクティブの値を確認します。ここにはsftp-server.exeが指定されている必要があります。OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド

さらに、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アカウントの資格情報を入力します(鍵認証の設定も可能です)。

OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド

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

OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド

すべて正常に設定されていれば、クライアントはSFTPサーバーへ接続し、ユーザーのホームディレクトリ(デフォルトではユーザープロファイルのフォルダ)内のファイル一覧が表示されます。

Total Commanderなどでお馴染みのファイルマネージャー形式のインターフェースを操作して、サーバーとクライアント間でファイルをコピーできます。ファイルはすべて安全なSFTP経由で転送されます。

OpenSSHを使ってWindowsにSFTP(SSH FTP)サーバーを構築する完全ガイド

Win32 OpenSSHをアンインストールする方法

システムからWin32 OpenSSHを正しくアンインストールする手順は以下の通りです。

  1. 管理者権限でPowerShellセッションを起動します。
  2. SSHDサービスを停止します:
    Stop-Service sshd
  3. sshdサービスをアンインストールします:.\uninstall-sshlsa.ps1
    sshd successfully uninstalled
    ssh-agent successfully uninstalled
  1. Windows 10でFTPサーバーを構築・管理する方法【初心者向け完全ガイド】

    Windows 10にFTP(File Transfer Protocol)サーバーを構築すると、どこからでも自分のPCにファイルをアップロード・ダウンロードできるようになります。FTPサーバーは、いわば「自分が完全にコントロールできるプライベートクラウド」です。通信速度は契約しているインターネット回線に依存し、月間の転送量制限もありません。また、ファイルのサイズや種類による制限もないため、1KBの小さなバックアップファイルでも、1TBもの大容量データでも問題なく扱えます。アカウント数にも上限がないため、友人や同僚、家族と一緒にファイルを保存・共有することも可能です。 この記事では、Windo

  2. SSHサーバーを使って動かなくなったWindows PCにアクセス・復旧させる方法

    システムが突然クラッシュし、どんなコマンドにも応答しなくなることは珍しくありません。さらに困るのは、大事なファイルにアクセスしたいのにPCがまったく動かせない状態になってしまったときです。しかし、心配はいりません。SSHサーバーを活用すれば、不具合を起こしたWindows PCにもアクセスでき、事態を打開できる可能性があります。まずは、SSHについて簡単におさらいしておきましょう。SSHサーバーとは?SSH(Secure Shell)は、安全性の確保されていないネットワーク上でも、ネットワークサービスを安全に操作できるように設計された暗号化通信プロトコルです。代表的な用途としては、別のコンピュ