GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでSFTPサーバーをセットアップするためのガイド

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コマンド

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ファイルシステムの設定についてコメントで教えてください。この記事で言及されているようなものですか、プールされたディレクトリなどですか?

この記事が役に立ったら、友達と共有してください。提案がある場合は、下にドロップしてください。


Linux
  1. 初心者向けのLinuxターミナルガイド

  2. Linuxとは何ですか?非技術ユーザー向けガイド

  3. Linuxサーバーのバックアップを簡単にするためにBorgmaticをインストールする方法

  1. LinuxにNginxWebサーバーをインストールする方法

  2. LinuxでのGrafanaのインストールとセットアップ

  3. Rocky Linux /CentOS8サーバーでSFTPサーバーをセットアップする方法

  1. Linuxサーバーを保護するための7つのステップ

  2. Ubuntu Webサーバーをセットアップしますか?

  3. Linux用の11の最高のCADソフトウェア