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

LinuxサーバーにSFTPをインストールして使用する方法

SFTPまたはSSHファイル転送プロトコルは、2台以上のコンピューター間でデータを安全に転送するための方法です。 SSHプロトコル上で実行され、そのセキュリティを利用し、認証を完全にサポートするのはFTPです。

現在では、従来の古いFTPまたはFTP/Sプロトコルの代わりにSFTPを使用することをお勧めします。 SFTPは、SSHが機能する方法であるため、デフォルトで安全です。セキュリティの観点から、SFTPはパスワードスニッフィングやman-in-the-middle攻撃(MiTM)からも保護します。

SSHと同様に、SFTPも暗号化および暗号化ハッシュ関数を使用してデータの整合性を保護します。また、パスワードやキーベースの認証など、複数の安全な認証方法をサポートしています。また、SSHプロトコルと同じポートで実行されるため、サーバーのオープンポートを外部ネットワークに減らすことができます。

前提条件

このガイドでは、LinuxシステムでSFTPサーバーをセットアップする方法を学習します。また、sftpクライアントの基本的なコマンドについても学習します。

以下は、実装の現在の環境です。

  • Linuxサーバー-Debian、Ubuntu、CentOS、Fedora、Rocky、またはその他のLinuxディストリビューションを使用できます。
  • LinuxシステムでOpenSSHパッケージが利用可能であることを確認してください。
  • SFTPクライアント-sftpコマンドラインまたは任意のGUIクライアント。

OpenSSHパッケージを確認する

SFTPサーバーをセットアップするには、LinuxシステムにOpenSSHパッケージがインストールされている必要があります。ほとんどすべてのLinuxディストリビューションサーバーには、デフォルトでOpenSSHパッケージがインストールされています。ただし、システムにOpenSSHパッケージがない場合は、公式リポジトリからインストールできます。

1. LinuxシステムにOpenSSHパッケージがインストールされていることを確認するには、次のコマンドを使用します。

DebianまたはUbuntuサーバーの場合、以下のdpkgコマンドを使用できます。

dpkg -l | grep ssh

以下はDebianシステムからの出力です。

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

最初の列' ii 'はパッケージがインストールされていることを意味します。パッケージ'openssh-sftp-server 'はDebian/Ubuntuシステムにインストールされています。

RHEL / CentOS / Fedora / Rocky Linux / AlmaLinuxユーザーの場合、以下のようにrpmコマンドを使用できます。

rpm -qa | grep ssh
グループとユーザーの作成

このステップでは、SFTPサーバーの新しいグループとユーザーを作成します。このグループ内のユーザーは、SFTPサーバーへのアクセスが許可されます。また、セキュリティ上の理由から、SFTPユーザーはSSHサービスにアクセスできません。 SFTPユーザーはSFTPサーバーにのみアクセスします。

1.次のコマンドを実行して、新しいグループ' sftpgroupを作成します。 '。

sudo groupadd sftpgroup

2.新しいユーザーを作成します'sftpuser '次のコマンドを使用します。

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

詳細なオプション:

  • -G :ユーザーを' sftpgroupに自動的に追加します '。
  • -d :新しいユーザーのホームディレクトリを指定します。
  • -s :新しいユーザーのデフォルトを' / sbin / nologinに設定します '、これはユーザーができないことを意味します SSHサーバーにアクセスします。

3.次に、ユーザー' sftpuserのパスワードを作成します '以下のコマンドを使用します。

passwd sftpuser

強力なパスワードを入力して繰り返し、「 Enter」を押します。 '確認します。

ユーザーを追加するには、ステージ番号2と3を繰り返します。 そして最も重要なことは、すべてのSFTPユーザーがグループ' sftpgroupに属している必要があることです。 'SSH経由のシェルアクセスなし。

Chrootジェイルディレクトリを設定

新しいグループとユーザーを作成したら、SFTPユーザーのchrootディレクトリを作成して構成する必要があります。

1.ユーザー'sftpuser'の場合、新しいホームディレクトリは'/ srv / sftpuser'になります。 。以下のコマンドを実行して作成します。

mkdir -p /srv/sftpuser

2.ユーザー'sftpuserのchrootを設定するには '、ディレクトリの所有権をユーザーrootに変更する必要がありますが、書き込みアクセスなしで読み取りおよび実行するにはグループのままです。

次のコマンドを使用して、ディレクトリの所有権をユーザー「root」に変更します。

sudo chown root /srv/sftpuser

グループに読み取りと実行の許可を与えますが、書き込みは許可しません。

sudo chmod g+rx /srv/sftpuser

3.次に、「 / srv / sftpuser」内に新しい「data」ディレクトリを作成します。 'ディレクトリを作成し、その所有権を変更します' data 'ユーザーへのディレクトリ'sftpuser '。

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

これまでのところ、SFTPユーザーディレクトリの構成の詳細を以下に示します。

  • ディレクトリ'/ srv / sftuser' デフォルトのホームディレクトリです。
  • ユーザー'sftpuser 'できません ディレクトリに書き込みます'/ srv / sftpuser 'ですが、そのディレクトリ内で読み取ることができます。
  • ユーザー'sftpuser 'ディレクトリにあるSFTPサーバーにファイルをアップロードできます'/ srv / sftpuser / data '。

SSHサーバーでSFTPを有効にする

OpenSSHでSFTPサーバーを有効にするには、SSH構成'/ etc / ssh/sshd_config'を編集する必要があります。

1.ssh構成を編集します'/ etc / ssh / sshd_config 'nanoまたはvimを使用しています。

sudo nano /etc/ssh/sshd_config

2.コメント スタンドアロンの'sftp-serverを無効にするための次の構成 '機能。

#Subsystem      sftp    /usr/lib/openssh/sftp-server

3.次の構成を行の一番下に貼り付けます。

Subsystem sftp internal-sftp

Match Group sftpgroup
     ChrootDirectory %h
     X11Forwarding no
     AllowTCPForwarding no
     ForceCommand internal-sftp

構成を保存して終了します。

詳細な構成:

  • サブプロセス'sftp-serverを使用する代わりに '、' internal-sftp '。
  • グループ'sftpgroupに対して有効になっているSFTPサーバー '。

4.新しい構成を適用するには、以下のコマンドを使用してsshサービスを再起動します。

sudo systemctl restart sshd

SFTPサーバーは準備ができてアクセス可能であり、SSHサービスと同じポートで実行されています。

SFTPサーバーにアクセスする

クライアント側では、ほとんどのLinuxディストリビューションにデフォルトでインストールされているsftpコマンドラインを使用します。ただし、別のコマンドラインクライアントまたは FileZillaなどのGUIFTPクライアントを使用することもできます。 、 Cyber​​duck 、など。

1. SFTPサーバーに接続するには、以下のようにsftpコマンドを実行します。

sftp [email protected]

SFTPおよび/またはSSHサーバーがカスタムポートで実行されている場合は、以下のようにsftpコマンドを使用できます。

sftp -P PORT [email protected]

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

2. SFTPサーバーに接続したら、次のコマンドを実行します。

現在のパスの作業ディレクトリを表示し、使用可能なすべてのファイルとディレクトリを一覧表示します。

pwd
ls

3.ディレクトリ'/のSFTPサーバーにローカルファイルをアップロードします '、これは'許可が拒否されました '、chrootディレクトリだからです。

put /path/to/file/on/local /

4.ローカルファイルをディレクトリ'/ data /にアップロードします 'SFTPサーバー上。構成が正しければ、ファイルは' / data /にアップロードされます。 'ディレクトリ。

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

5.' / dataで利用可能なファイルを確認します '次のコマンドを使用したディレクトリ。

ls /data/

そして、ファイルがSFTPサーバーにアップロードされているのがわかります。

結論

おめでとう!これで、LinuxシステムでSFTPサーバーが正常に構成されました。このタイプの構成は、OpenSSHがインストールされているほとんどのLinuxシステムに適用できます。また、SFTPユーザー用にchrootディレクトリを設定する方法と、基本的なsftpクライアントコマンドを学習しました。


Ubuntu
  1. LinuxでFlatpakをインストールして使用する方法

  2. Ubuntu20.04にsftpサーバーをインストールしてセットアップする方法

  3. LinuxでTracerouteをインストールして使用する方法

  1. コマンドを使用してLinux画面をインストールして使用する方法

  2. UbuntuLinuxにHubotをインストールして使用する方法

  3. Linux Screenをインストールして使用する方法は?

  1. LinuxにPuTTYをインストールして使用する方法

  2. Ubuntu20.04LTSにSteamをインストールして使用する方法

  3. LinuxでVimエディターをインストールして使用する方法