SFTPとは何ですか?
SFTPはSSHファイル転送プロトコルの略です。あなたはそれが正しいと思いました。上部にSSHを使用するFTPのバージョンです。これにより、ユーザーは暗号化された接続を介してLinuxサーバーとの間でファイルをアップロードおよびダウンロードできます。 FTPは暗号化なしでも同じことを行うため、最近ではFTPよりもSFTPが好まれています。
LinuxシステムでSFTPサーバーをセットアップする方法を見てみましょう。
LinuxでのSFTPサーバーのセットアップ
このチュートリアルではUbuntuを使用しました。インストールコマンドはUbuntuとDebianに固有ですが、残りの手順は他のLinuxディストリビューションでも実行できます。
手順を実行するには、sudoer権限が必要です。したがって、sudo権限を持たない場合は、システム管理者に連絡してください。あなたがその人なら、Ubuntuでのsudoユーザーの作成について読んでください。
SFTPの設定は非常に簡単です。その前に、サーバー側にOpenSSHをインストールし、クライアント側にSSHパッケージをインストールする必要があります。
UbuntuでのSSHの設定については別の記事で詳しく説明しましたが、ここでは重要な手順について説明します。
サーバーにOpenSSHをインストールするには、次のコマンドを使用できます。
sudo apt install openssh-server
また、SFTPサーバーにアクセスするシステムにSSHが必要です。
sudo apt install ssh
これが完了すると、SFTPをセットアップするためのすべての準備が整います。これは3つのステップで行われ、1つずつお見せします。
ステップ1:グループ、ユーザー、ディレクトリを作成する
SFTPを使用するには (またはその他の一般的なサービス)安全に、そのサービスとそのサービスのみを使用するグループとユーザーを作成するのが最善です。 「1つの特定のエンティティに1つの特定の権利を与えるのが最善です」 。
SFTPアクセスと通常のシステムアクセスを許可する場合は、サービスに応じて簡単に識別できるようにユーザーを作成します。たとえば、 seeni 通常のシステムアクセスに使用され、 seenisftp SFTPアクセスに使用できます。この方法を使用すると、管理側で簡単になります。
「sftpg」という名前のグループを作成しましょう 」groupaddコマンドを使用:
sudo groupadd sftpg
「seenisftp」という名前のユーザーを作成しましょう 彼を上記のグループに追加し、パスワードを与えます。
sudo useradd -g sftpg seenisftp
sudo passwd seenisftp
useraddコマンドで、 -g オプションは、どのユーザーを追加するかをグループに指示します。 Linuxのすべてのユーザーを一覧表示し、新しいユーザーが追加されたことを確認できます。
ディレクトリ/data /を使用するとします。 sftpのルートとして および/data / USERNAME ユーザーごとに。したがって、ユーザーがsftpを介してログインする場合は、 / data / USERNAMEにいる必要があります。 デフォルトのディレクトリとして( / home / USERNAME にいるのと同じように) SSH経由でLinuxシステムにログインするときのディレクトリ)。また、そのディレクトリからファイルを読み取ることはできるが、アップロードにのみアップロードできるという制約があると想定します。 ディレクトリ。
次のようにディレクトリを作成し、アクセス権と所有権を変更しましょう(Linuxでのファイルのアクセス許可については、こちらをご覧ください)。
sudo mkdir -p /data/seenisftp/upload
sudo chown -R root.sftpg /data/seenisftp
sudo chown -R seenisftp.sftpg /data/seenisftp/upload
混乱する可能性のあることの1つは、ユーザーのディレクトリの所有権をルート自体に与えることです。これは、SFTPでのchrootingに必須です。したがって、 / data / USERNAMEの所有者であることを確認してください ルートです 。
現在、 seenisftpという名前のユーザーがいます グループsftpg / data / seenisftpにアクセス許可が設定されている 。
ステップ2:sshd_configを構成する
次に、sftpgグループに属するユーザーがログインするたびに sftp に入るように、sshサーバーを構成する必要があります。 通常のシェルの代わりに、sshを通過します。 次のスニペットを/etc/ssh/sshd_config
に追加します まだ存在しない場合。
Match Group sftpg
ChrootDirectory /data/%u
ForceCommand internal-sftp
上記のスニペットでは、ChrootDirectoryを使用すると、指定したディレクトリをディレクトリツリーのルート(「/」ディレクトリ)ノードとして作成できます。ログインしたユーザーは、そのディレクトリの上に何も表示されません。そのため、現在のユーザーが sftpを介して他のユーザーのファイルにアクセスするのを停止します 。 %u ログイン時に現在のユーザー名を入力するためのエスケープコードです。 seenisftpの場合 sftpを介してログインします 、彼は / data / seenisftpにいます 彼のルートディレクトリとして。彼はその上に何も見ることができなくなります。
ステップ3:サービスを再起動します
sshd_configに加えた変更を加えるため ライブの場合は、次のようにサービスを再起動します。
sudo systemctl restart sshd
Linuxコマンドラインを介したSFTPへのアクセス
SSHで通常行うのと同じようにSFTPにログインできます。
sftp [email protected]
SFTPコマンドは通常、次の形式です。
COMMAND [SOURCE] [DESTINATION]
どのコマンドでも、引数はローカルシステムパスまたはリモートシステムパスのいずれかです。それらの間に特定の目に見える違いはありません。引数がローカルかリモートかを考慮した後、通常どおりパスを指定できます。
GET –リモートサーバーからローカルシステムにコンテンツをダウンロードします。以下のコマンドは、リモートファイルをダウンロードします poster.img ローカルシステムの〜/ Pictures ディレクトリ。
GET poster.img ~/Pictures
置く –ローカルシステムからリモートシステムにコンテンツをアップロードします。以下のコマンドは、 〜/ Pictures / poster2.jpgをアップロードします アップロードに ディレクトリ。
PUT ~/Pictures/poster2.jpg uploads/
RM –リモートシステム内のファイルを削除します。これはrmと非常によく似ています 指図。 uploads / poster3.jpgで画像を削除する以下のコマンドからそれを見ることができます
RM uploads/poster3.jpg
上記のコマンドは非常に基本的なものであり、FTP/SFTPサーバーを探索するには十分です。詳細を知りたい場合は、help
を使用してください コマンドを実行するか、このリソースを使用してください。
この記事がLinuxでのSFTPサーバーのセットアップに役立つことを願っています。
SFTPファイルシステムの設定についてコメントで教えてください。この記事で言及されているようなものですか、プールされたディレクトリなどですか?
この記事が役に立ったら、友達と共有してください。提案がある場合は、下にドロップしてください。