ファイル転送プロトコルは、コンピューターネットワーク上のサーバーからクライアントへのコンピューターファイルの転送に使用される標準の通信プロトコルです。
FTPはセキュリティが不足しているため、今日では人気がありません。このプロトコルを使用してファイルを送信すると、データ、ユーザー名、およびパスワードがすべてプレーンテキストで共有されます。つまり、ハッカーはほとんどまたはまったく労力をかけずにこの情報にアクセスできます。データを安全にするには、SFTPなどのアップグレードバージョンのFTPを使用する必要があります。
SFTPセキュアファイル転送プロトコルは、リモートコンピュータへの安全なアクセスを提供して安全な通信を提供するファイル転送プロトコルです。 SSH – Secure Socket Shellを活用しており、「Secure ShellFileTransferProtocol」とも呼ばれます。
関連コンテンツ
- LinuxでSFTPクライアントを操作する方法–10sftpコマンド
- Debian11サーバーでSFTPサーバーをセットアップする方法
- Pythonスクリプトを使用してSFTPサーバーからファイルをダウンロードする
- golangを使用してSFTPサーバーからファイルを一覧表示、アップロード、およびダウンロードする
- OpenSUSELeap15.3サーバーでSFTPサーバーを設定する方法
- Ubuntu20.04にsftpサーバーをインストールしてセットアップする方法
- CentOS 8 /RHEL8サーバーでSFTPサーバーをセットアップする方法
前提条件
このガイドに従うには、次のものがあることを確認してください。
- ArchLinuxマシン
- サーバーまたはrootアクセス権を持つユーザーへのrootアクセス
- サーバーからのインターネットアクセス
目次
- サーバーが最新であることを確認する
- SSHサービスがインストールされていることを確認する
- ユーザーとグループを作成し、必要なディレクトリを追加する
- sshサービスの設定
- セットアップが期待どおりに機能していることを確認する
1。サーバーが最新であることを確認する
続行する前に、システムが最新であることを確認してください。このコマンドを使用して、システムパッケージを更新し、更新します。
sudo pacman -Syyu
2。 SSHサービスがインストールされていることを確認する
sshがインストールされていることを確認します:
$ sudo pacman -Qi openssh
Name : openssh
Version : 8.6p1-1
Description : Premier connectivity tool for remote login with the SSH protocol
Architecture : x86_64
URL : https://www.openssh.com/portable.html
Licenses : custom:BSD
Groups : None
Provides : None
Depends On : glibc krb5 openssl libedit ldns libxcrypt libcrypt.so=2-64 zlib pam
Optional Deps : xorg-xauth: X11 forwarding
x11-ssh-askpass: input passphrase in X
libfido2: FIDO/U2F support
Required By : None
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 5.79 MiB
Packager : Giancarlo Razzolini <[email protected]>
Build Date : Mon 19 Apr 2021 11:32:46 AM UTC
Install Date : Thu 03 Jun 2021 03:23:32 AM UTC
Install Reason : Explicitly installed
Install Script : Yes
Validated By : Signature
sshがインストールされていない場合は、次のコマンドでインストールします。
sudo pacman -S openssh
インストールされたので、サービスを開始します
sudo systemctl start sshd
ステータスを確認する
$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-12-03 10:19:02 UTC; 17min ago
Main PID: 467 (sshd)
Tasks: 1 (limit: 4606)
Memory: 5.0M
CGroup: /system.slice/sshd.service
└─467 sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups
Dec 04 14:53:30 ip-10-2-40-103 sshd[13109]: Unable to negotiate with 141.98.10.246 port 34078: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:53:42 ip-10-2-40-103 sshd[13111]: Unable to negotiate with 141.98.10.246 port 38674: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:53:53 ip-10-2-40-103 sshd[13115]: Unable to negotiate with 141.98.10.246 port 43268: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:05 ip-10-2-40-103 sshd[13117]: Unable to negotiate with 141.98.10.246 port 47864: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:17 ip-10-2-40-103 sshd[13119]: Unable to negotiate with 141.98.10.246 port 52460: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:41 ip-10-2-40-103 sshd[13123]: Unable to negotiate with 141.98.10.246 port 33418: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:53 ip-10-2-40-103 sshd[13127]: Unable to negotiate with 141.98.10.246 port 38014: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:55:05 ip-10-2-40-103 sshd[13129]: Unable to negotiate with 141.98.10.246 port 42614: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 15:16:10 ip-10-2-40-103 sshd[13191]: Received disconnect from 61.177.173.21 port 60983:11: [preauth]
Dec 04 15:16:10 ip-10-2-40-103 sshd[13191]: Disconnected from authenticating user root 61.177.173.21 port 60983 [preauth]
3。ユーザーとグループを作成し、必要なディレクトリを追加する
次に、必要なユーザーがシステムに存在することを確認します。私の場合、sftpユーザーを/srv/sftp
としてホームにしたいです。
ホーム/srv/sftp
を作成しましょう このコマンドで:
sudo mkdir /srv/sftp
次に、SFTP専用の包括的グループを作成しましょう
sudo groupadd sftpusers
次に、citizixというsftp専用ユーザーを作成します。
sudo useradd -G sftpusers -d /srv/sftp/citizix -s /sbin/nologin citizix
上記のオプションは次のことを行います:
-
-G sftpusers
:ユーザーを作成し、sftpusers
に追加します グループ -
-d /srv/sftp/citizix
:ホームディレクトリを/srv/sftp/citizix
として設定します -
-s /sbin/nologin
:ユーザーにログインさせたくないので、sshログインシェルはありません - 最後に、
citizix
としてのユーザー名
次に、次のコマンドを使用して、作成したユーザーにパスワードを追加します。
$ sudo passwd citizix
Changing password for user citizix.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
3。 sshサービスの設定
必要なソフトウェアをインストールし、ユーザーとグループを作成したので、sshを構成しましょう。
sshでパスワード認証が有効になっていることを確認します。ここで設定ファイルを編集します/etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
次に、この行にコメントが付いていないことを確認します:
PasswordAuthentication yes
次に、sftpusers
にユーザーのルールを追加する必要があります sftpと見なされるグループ。構成ファイルを編集します:
sudo vim /etc/ssh/sshd_config
ファイルの最後に次のコンテンツを追加します:
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /srv/sftp
ForceCommand internal-sftp
次に、sshdを再起動して、構成を再ロードします。
sudo systemctl restart sshd
sshd
であることを確認します 期待どおりに実行されています:
$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-12-04 15:48:19 UTC; 18s ago
Main PID: 14269 (sshd)
Tasks: 1 (limit: 4606)
Memory: 892.0K
CGroup: /system.slice/sshd.service
└─14269 sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups
Dec 04 15:48:19 ip-10-2-40-103 systemd[1]: Started OpenSSH Daemon.
Dec 04 15:48:19 ip-10-2-40-103 sshd[14269]: Server listening on 0.0.0.0 port 22.
Dec 04 15:48:19 ip-10-2-40-103 sshd[14269]: Server listening on :: port 22.
4。セットアップが期待どおりに機能していることを確認する
ユーザーを正常に作成し、sftp構成を追加したら、次のコマンドを使用してセットアップをテストします。
❯ sftp [email protected]
[email protected]10.2.11.8's password:
Connected to 10.2.11.8.
sftp>
これで、ユーザーが構成された状態でsftpサーバーが稼働しました!
ユーザーはサーバーにログインして、ホームディレクトリにあるファイルとディレクトリにアクセスできます。ユーザーを自分のディレクトリ外の他のディレクトリに移動させたい場合は、ユーザーがアクセスするのに十分な権限を持っていることを確認してください。これらのディレクトリとファイルは、sftpディレクトリ(/srv/sftp
)内にある必要があります 。
例:ユーザーにディレクトリ/srv/sftp/paymentfiles
にアクセスしてもらいたい場合 、次の手順を実行します:
ディレクトリを作成する
sudo mkdir /srv/sftp/paymentfiles
次に、ユーザーを割り当てます(citizix
)ディレクトリを所有することによるアクセス:
sudo chown citizix:sftpusers /srv/sftp/paymentfiles
それだ。これで、ユーザーはアクセスできるようになります。
結論
このガイドでは、Archlinuxサーバーにsftpサーバーをセットアップすることができました。