ファイル転送プロトコルは、コンピューターネットワーク上のサーバーからクライアントへのコンピューターファイルの転送に使用される標準の通信プロトコルです。
FTPはセキュリティが不足しているため、今日では人気がありません。このプロトコルを使用してファイルを送信すると、データ、ユーザー名、およびパスワードがすべてプレーンテキストで共有されます。つまり、ハッカーはほとんどまたはまったく労力をかけずにこの情報にアクセスできます。データを安全にするには、SFTPなどのアップグレードバージョンのFTPを使用する必要があります。
SFTPセキュアファイル転送プロトコルは、リモートコンピュータへの安全なアクセスを提供して安全な通信を提供するファイル転送プロトコルです。 SSH – Secure Socket Shellを活用しており、「Secure ShellFileTransferProtocol」とも呼ばれます。
関連コンテンツ
- Pythonスクリプトを使用してSFTPサーバーからファイルをダウンロードする
- golangを使用してSFTPサーバーからファイルを一覧表示、アップロード、およびダウンロードする
- OpenSUSELeap15.3サーバーでSFTPサーバーを設定する方法
- Ubuntu20.04にsftpサーバーをインストールしてセットアップする方法
- CentOS 8 /RHEL8サーバーでSFTPサーバーをセットアップする方法
前提条件
このガイドに従うには、次のものがあることを確認してください。
- Debian11サーバー
- サーバーまたはrootアクセス権を持つユーザーへのrootアクセス
- サーバーからのインターネットアクセス
目次
- サーバーが最新であることを確認する
- SSHサービスがインストールされていることを確認する
- ユーザーとグループを作成し、必要なディレクトリを追加する
- sshサービスの設定
- セットアップが期待どおりに機能していることを確認する
1。サーバーが最新であることを確認する
続行する前に、システムが最新であることを確認してください。このコマンドを使用して、システムパッケージを更新し、更新します。
sudo apt update
sudo apt upgrade -y
2。 SSHサービスがインストールされていることを確認する
sshがインストールされていることを確認します:
$ sudo apt install -y openssh-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
openssh-server is already the newest version (1:8.4p1-5).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
インストールされたので、サービスを開始します
sudo systemctl start sshd
ステータスを確認する
$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-12-03 10:18:03 UTC; 2 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 665 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 682 (sshd)
Tasks: 1 (limit: 4626)
Memory: 6.2M
CPU: 9.132s
CGroup: /system.slice/ssh.service
└─682 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Dec 05 09:20:46 ip-10-2-40-122 sshd[14717]: Received disconnect from 221.181.185.94 port 47597:11: [preauth]
Dec 05 09:20:46 ip-10-2-40-122 sshd[14717]: Disconnected from authenticating user root 221.181.185.94 port 47597 [preauth]
Dec 05 10:34:30 ip-10-2-40-122 sshd[14797]: Received disconnect from 222.186.30.76 port 23207:11: [preauth]
Dec 05 10:34:30 ip-10-2-40-122 sshd[14797]: Disconnected from authenticating user root 222.186.30.76 port 23207 [preauth]
Dec 05 10:34:41 ip-10-2-40-122 sshd[14799]: Received disconnect from 221.181.185.151 port 18104:11: [preauth]
Dec 05 10:34:41 ip-10-2-40-122 sshd[14799]: Disconnected from authenticating user root 221.181.185.151 port 18104 [preauth]
Dec 05 11:11:54 ip-10-2-40-122 sshd[14830]: Received disconnect from 221.131.165.65 port 19729:11: [preauth]
Dec 05 11:11:54 ip-10-2-40-122 sshd[14830]: Disconnected from authenticating user root 221.131.165.65 port 19729 [preauth]
Dec 05 11:19:03 ip-10-2-40-122 sshd[14840]: Accepted publickey for admin from 105.231.148.146 port 60649 ssh2: RSA SHA256:nDQ1FMciYtGpPYjdOwbUTVg7kQxEFtAjoSdWulRilIA
Dec 05 11:19:03 ip-10-2-40-122 sshd[14840]: pam_unix(sshd:session): session opened for user admin(uid=1000) by (uid=0)
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
New password:
Retype new password:
passwd: password 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
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-12-05 11:22:02 UTC; 12s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 15292 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 15293 (sshd)
Tasks: 1 (limit: 4626)
Memory: 1.0M
CPU: 159ms
CGroup: /system.slice/ssh.service
└─15293 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Dec 05 11:22:02 ip-10-2-40-122 systemd[1]: Starting OpenBSD Secure Shell server...
Dec 05 11:22:02 ip-10-2-40-122 sshd[15293]: Server listening on 0.0.0.0 port 22.
Dec 05 11:22:02 ip-10-2-40-122 sshd[15293]: Server listening on :: port 22.
Dec 05 11:22:02 ip-10-2-40-122 systemd[1]: Started OpenBSD Secure Shell server.
4。セットアップが期待どおりに機能していることを確認する
ユーザーを正常に作成し、sftp構成を追加したら、次のコマンドを使用してセットアップをテストします。
❯ sftp [email protected]
[email protected]'s password:
Connected to 18.236.122.10.
sftp>
これで、ユーザーが構成された状態でsftpサーバーが稼働しました!
ユーザーはサーバーにログインして、ホームディレクトリにあるファイルとディレクトリにアクセスできます。ユーザーを自分のディレクトリ外の他のディレクトリに移動させたい場合は、ユーザーがアクセスするのに十分な権限を持っていることを確認してください。これらのディレクトリとファイルは、sftpディレクトリ(/srv/sftp
)内にある必要があります 。
例:ユーザーにディレクトリ/srv/sftp/paymentfiles
にアクセスしてもらいたい場合 、次の手順を実行します:
ディレクトリを作成する
sudo mkdir /srv/sftp/paymentfiles
次に、ユーザーを割り当てます(citizix
)ディレクトリを所有することによるアクセス:
sudo chown citizix:sftpusers /srv/sftp/paymentfiles
それだ。これで、ユーザーはアクセスできるようになります。
結論
このガイドでは、Debian11でsftpサーバーをセットアップすることができました。