クライアントとサーバーでパスワード認証を使用した SFTP のセットアップと動作確認を行う

ページ作成日 :

環境

Windows
  • Windows 10 Pro
  • Windows Server 2019
  • Windows 7
  • Windows Server 2012 R2
OpenSSH
  • 7.7p1
  • 8.1p1 - Beta

※他のバージョンでも動作しますが未確認です

はじめに

ここではクライアントとサーバー間で SFTP による通信を行うための手順について説明します。 認証方法としてはセットアップが一番簡単なパスワード認証を行います。

事前準備

  • クライアントに OpenSSH クライアントがインストールされていること
  • サーバーに OpenSSH サーバーがインストールされていること

サーバー側で SFTP サーバーの準備をする

管理者権限(administrators)のあるアカウントでサーバーにログインします。

PowerShell を起動します。

image

以下のコマンドを入力します。(ssh コマンドでもかまいません)

sftp localhost

まだ何もセットアップしていないので接続できないことが確認できます。

image

SFTP アカウントの作成

SFTP でログインするアカウントを作成します。 Windows のアカウントが SFTP のログインアカウントとして扱われます。

スタートメニューを右クリックして「コンピューターの管理」を選択します。

image

「ローカル ユーザーとグループ」を展開し、「ユーザー」を右クリックして「新しいユーザー」を選択します。

image

ユーザー名とパスワードを入力します。ユーザー名は SFTP でログインするユーザー名になります。大文字小文字は区別されません。

image

公開鍵認証の設定でサインインすることになりますが、Admonistrators 権限は不要です。 リモート環境の場合は Remote Desktop Users の権限を付加しておいてください。

SSH のポートオープン

22番ポートを開きます。コマンドでもできますが、ここでは GUI を使用して設定します。 スタートメニューから「Windows 管理ツール」フォルダ⇒「セキュリティが強化された Windows Defender ファイアウォール」を選択します。

image

「受信の規則」を右クリックして「新しい規則」を選択します。

image

「ポート」を選択して「次へ」を選択します。

image

「TCP」を選択して「22」を入力します。

image

「接続を許可する」を選択します。

image

「ドメイン」「プライベート」にチェックを入れます。インターネット上のサーバーの場合は「パブリック」にもチェックを入れますが 環境に合わせて設定してください。

image

名前はなんでもいいですが、SSH (SFTP) のためにポートを開けたことが分かりやすい名前にしてください。

image

一覧に追加されました。

image

SSH サービスの起動設定

コマンドでも設定できますが、ここでは GUI を使用して設定します。 スタートメニューを右クリックして「コンピューターの管理」を選択します。

image

「サービスとアプリケーション」⇒「サービス」を選択し、中央の一覧から「OpenSSH SSH Server」を選択します。 左側に「サービスの開始」のリンクが表示されますので、リンクをクリックすると SSH サーバーが起動します。

image

これで SSH が使用できるようになりましたが、Windows を再起動したりすると再度手動で起動しなければならないため、 自動で SSH サーバーが起動するようにします。 「OpenSSH SSH Server」をダブルクリックします。

image

スタートアップの種類を「自動」に設定して OK ボタンをクリックします。

image

SSH のログイン確認

サービスが起動したので試しにログインしてみます。コマンドプロンプト、または PowerShell を起動して以下のコマンドを入力します。 (<>の箇所は置き換えてください)(接続確認なので ssh コマンドでもかまいません)

sftp <ユーザー名>@localhost

image

「yes」を入力します。

image

パスワードを入力します。

image

表示が変わりログインできたことになります。

image

試しに「dir」コマンドを入力するとフォルダの一覧が見れます。(文字化けするのは仕様です)

image

クライアント側から SFTP でサーバーに対しファイルを送受信する

クライアントPC 側にサインインします。 ファイルの送受信を確認するために「C:\Temp」フォルダを作成してテキストを入力した「test.txt」ファイルを配置します。 (日本語ファイル名だと送受信でエラーになるため英数字にしておきます)

image

コマンドプロンプトまたは PowerShell を起動します。

image

以下のコマンドで SFTP でログインします。(<>の箇所は置き換えてください)

sftp <ユーザー名>@<サーバー名>

「yes」と入力します。

image

パスワードを入力しログインします。

image

pwd や dir コマンドでログイン出来ていることを確認できます。

image

put コマンドでファイルを送信します。

put c:\temp\test.txt

image

サーバー側の「C:\Users\sftptest」フォルダを見てみると test.txt ファイルが送信されていることを確認できます。

image

クライアントから get を試してみます。

get test.txt c:\temp\test2.txt

image

ファイルが取得できたことを確認出来ました。

image

まとめ

SFTP を使用してクライアントとサーバーでファイルの送受信ができることを確認出来ました。 通信内容も暗号化されているので第三者に傍受される可能性も低くなっています。

ただ、今回認証方法としてパスワード認証を行っていますが、 セキュリティ的には少し弱くなってしまいますので 次回は公開鍵認証について説明したいと思います。