SFTP(SSH / Secure File Transfer Protocol)は、リモートネットワークを介してファイルを転送、アクセス、および管理するために使用されるネットワーク伝送規格です。 SSH(Secure Shell)が含まれているため、FTPプロトコルよりもはるかに安全です。
ファイルは、SFTPの単一の制御チャネルを介して転送されます。認証が必要で、ポート22で実行されます。SFTPでは、SSHシェルは、SFTPを介して転送されるユーザー名、パスワード、およびその他の個人データを保護するのに役立つ暗号化を提供します。
このハウツーガイドでは、Webサーバードキュメントルート用のSFTPユーザーを作成する方法を学習します。
ステップ1-SSH(セキュアシェル)のインストール
SFTPは、SSHがネットワーク経由でデータを転送するときにデータに暗号化を提供するため、非常に安全なファイル転送プロトコルです。 SSHは、デフォルトで主にLinuxディストリビューションにインストールされますが、システムにプリインストールされていない場合は、以下のコマンドを使用してインストールできます。
sudo apt install ssh
すでにインストールされている場合、コマンドはOpenSSHパッケージをアップグレードします。
ステップ2–SFTPサーバーコードを使用するようにSSHを構成する
次に、SSHの構成ファイルをテキストエディターで開き、SFTPサーバーコード用に変更します。ここでは、nanoエディターを使用して構成ファイルを編集します。
sudo nano /etc/ssh/sshd_config
「Subsystemsftp」で始まる行を見つけます。
以下のスクリーンショットに示すように、行の先頭に#を追加して行にコメントを付け、この行の後に次の行を書き込みます。
Subsystem sftp internal-sftp
SSHDは、上記の行を変更してSFTPサーバーを実行する代わりに、SFTPサーバーコードを使用します。
構成ファイルを変更したら、ファイルを保存し、キーボードショートカットキーのCTRL+SおよびCTRL+Xを使用してファイルを終了します。
変更後、SSHDデーモンを再起動して、変更を機能させる必要があります。
sudo systemctl restart sshd
ステップ3–ユーザー(SFTPユーザー)の作成
ドキュメントルートへのSFTPアクセスのみを持つ新しいユーザーを作成することは優れた方法です。 Sudo権限を持つユーザーをWebサーバーのドキュメントルートに追加することはお勧めしません。 adduserコマンドを使用して新しいユーザーを作成します:
sudo adduser sftpuser
端末は、パスワードの設定やユーザー情報など、いくつかのことを要求します。また、他のいくつかの詳細も要求されるため、空のままにするか、適切な情報を提供してください。
sftpuser
という名前の新しいユーザー 正常に作成されました。
ステップ4–SSH構成ファイルでの一致ユーザーディレクティブの作成
次に、このユーザーをドキュメントルートに制限し、SSHへのユーザーのアクセスを無効にして、ユーザーがSFTP経由でログインできるようにします。
ユーザーのアクセスを制限するには、任意のテキストエディタでSSHの構成ファイルを開きます。
sudo nano /etc/ssh/sshd_config
次に、ファイルの最後に移動し、「sshd_config」構成ファイルに次のコンテンツを追加します。
Match User sftpuser ForceCommand internal-sftp ChrootDirectory /var/www/ PasswordAuthentication yes X11Forwarding no AllowTcpForwarding no
必ず「sftpuser」ユーザー名を設定したユーザー名に置き換えてください。
上記のコンテンツがSSH構成ファイルに追加されたら、CTRL+SおよびCTRL+Xショートカットキーを使用して保存して終了します。
構文をチェックし、すべてがうまくいったかどうかを確認するには、次のコマンドを実行できます。
sudo sshd -t
エラーが発生しなかった場合は、変更を機能させるためにSSHサービスをリロードできます。
sudo systemctl restart sshd
ステップ5–SFTPユーザーをwww-dataグループに追加する
次に、次のコマンドを実行して、ユーザーをwww-dataグループに追加します。
sudo usermod -a -G www-data sftpuser
実行が成功すると、出力は表示されません。
ステップ6–ドキュメントルートディレクトリのアクセス許可を設定する
SFTPはchrootディレクトリのアクセス許可に関して非常に厳格であるため、以降の手順に注意深く従ってください。
- まず、var:
sudo ls -ld /var/
- デフォルトでは、権限は755で、所有者はrootである必要があります。そうでない場合は、以下のコマンドを実行して適切な権限を設定します。
sudo chmod 755 /var/
- 次に、このコマンドを使用して正しい所有権を設定します。
sudo chown root:root /var/
- 「/var/www/」をchrootディレクトリに設定したので。次に、chrootディレクトリの正しい所有権を設定します。
sudo chown root:root /var/www/
- グループがドキュメントのルートディレクトリに書き込めるようにするには、その権限を755に設定します。
sudo chmod 755 /var/www/html/
- 「/var/ www / html」ドキュメントルートとその追加のディレクトリおよびファイルの所有権をwww-dataグループに付与するには、以下のコマンドを使用します。
sudo chown -R www-data:www-data /var/www/html*
- 次に、次のコマンドを使用して、「/ var / www/html」ドキュメントルートに配置されたコンテンツに755のアクセス許可を付与します。
sudo find /var/www/html/ -type d -exec chmod 775 {} \;
- 上記のコマンドは、SFTPユーザーにディレクトリの読み取り、書き込み、および実行可能権限を付与します。
また、所有者とSFTPユーザーのグループがファイルの読み取りと書き込みを行えるようにするには、ドキュメントルートに存在するすべてのファイルに664のアクセス許可を与える必要があります。
sudo find /var/www/html/ -type f -exec chmod 664 {} \;
- 最後のステップとして、すべての新しいファイルとディレクトリが、新しく作成されたSFTPユーザーが作成されたwww-dataグループを取得していることを確認します。
sudo find /var/www/html -type d -exec chmod g+s {} \;
同様に、chrootに同じ権限を適用します:
sudo chmod 755 /var/www/
おめでとう!新しいSFTPユーザーが作成され、Webサーバーのドキュメントルートに追加されました。これで、SFTPにログインできます。
結論
このハウツーガイドでは、SFTPサーバーコードを使用するためにSSHをインストールして構成する方法を学びました。その後、新しいユーザーを作成し、ドキュメントルートに制限し、SSHアクセスを無効にしました。次に、ユーザーをWebサーバーのドキュメントルートに追加して、ユーザーがドキュメントルート内のファイルの読み取り、書き込み、実行を行えるようにしました。