SFTP Secure File Transfer Protocol / SSH File Transfer Protocolの略で、ローカルシステムからリモートサーバーへ、またはその逆にssh経由でファイルを安全に転送するために使用される最も一般的な方法の1つです。 sftpの主な利点は、「 openssh-server」以外の追加パッケージをインストールする必要がないことです。 」、ほとんどのLinuxディストリビューションでは、「openssh-server」パッケージがデフォルトのインストールの一部です。 sftpのその他の利点は、ユーザーがsshではなくsftpのみを使用できるようにすることです。
最近、Debian 10、コードネーム「Buster」がリリースされました。この記事では、Debian10システムでChroot「Jail」のような環境でsftpを構成する方法を示します。ここで、Chroot Jailのような環境とは、ユーザーがそれぞれのホームディレクトリを超えたり、ホームディレクトリからディレクトリを変更したりできないことを意味します。ラボの詳細は次のとおりです。
- OS =Debian 10
- IPアドレス=192.168.56.151
SFTP構成の手順に進みましょう
ステップ:1)groupaddコマンドを使用してsftpのグループを作成します
ターミナルを開き、「 sftp_users」という名前のグループを作成します 」以下のgroupaddコマンドを使用して
[email protected]:~# groupadd sftp_users
手順:2)ユーザーをグループ「sftp_users」に追加し、権限を設定します
新しいユーザーを作成し、そのユーザーを「sftp_users」グループに追加する場合は、次のコマンドを実行します。
構文: #useradd -m -G sftp_users
ユーザー名が「ジョナサン」だとします
[email protected]:~# useradd -m -G sftp_users jonathan
次のchpasswdコマンドを使用してパスワードを設定します
[email protected]:~# echo "jonathan:<enter_password>" | chpasswd
既存のユーザーを「sftp_users」グループに追加してからusermodコマンドの下で実行する場合は、既存のユーザー名が「chris」であると仮定します。
[email protected]:~# usermod -G sftp_users chris
次に、ユーザーに必要な権限を設定します。
[email protected]:~# chown root /home/jonathan /home/chris/
ユーザーのホームディレクトリと正しい所有権の両方にアップロードフォルダを作成します。
[email protected]:~# mkdir /home/jonathan/upload [email protected]:~# mkdir /home/chris/upload [email protected]:~# chown jonathan /home/jonathan/upload [email protected]:~# chown chris /home/chris/upload
注: JonathanやChrisのようなユーザーは、ファイルやディレクトリをアップロードして、ローカルシステムからフォルダをアップロードできます。
手順:3)sftp構成ファイル(/ etc / ssh / sshd_config)を編集します
sftp操作はsshを介して実行されることをすでに述べたように、その構成ファイルは「 / etc / ssh / sshd_config 」です。 「、変更を加える前に、まずバックアップを取り、次にこのファイルを編集して、次のコンテンツを追加することをお勧めします。
[email protected]:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org [email protected]:~# vim /etc/ssh/sshd_config ……… #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp …………
ファイルを保存して終了します。
上記の変更を有効にするには、次のsystemctlコマンドを使用してsshサービスを再起動します
[email protected]:~# systemctl restart sshd
上記の「sshd_config」ファイルでは、「Subsystem」で始まる行をコメントアウトし、新しいエントリ「Subsystemsftpinternal-sftp」と次のような新しい行を追加しました。
「MatchGroupsftp_users」 –>これは、ユーザーが「sftp_users」グループの一部である場合、このエントリに以下に記載されているルールを適用することを意味します。
「ChrootDierctory%h 」–>これは、ユーザーがそれぞれのホームディレクトリ内のディレクトリのみを変更できること、ホームディレクトリを超えることはできないこと、つまり、ユーザーがディレクトリを変更することを許可されていないことを意味します。他のユーザーやシステムのディレクトリにはアクセスしないでください。
「ForceCommandinternal-sftp 」–>これは、ユーザーがsftpコマンドのみに制限されていることを意味します。
ステップ:4)sftpのテストと検証
sftpサーバーと同じネットワーク上にある他のLinuxシステムにログインし、「sftp_users」グループにマップしたユーザーを介してsshsftpサーバーを試してください。
[[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]#
上記は、ユーザーがSSHを許可されていないことを確認しています。次に、次のコマンドを使用してsftpを試してください。
[[email protected] ~]# sftp [email protected] [email protected]'s password: Connected to 192.168.56.151. sftp> ls -l drwxr-xr-x 2 root 1001 4096 Sep 14 07:52 debian10-pkgs -rw-r--r-- 1 root 1001 155 Sep 14 07:52 devops-actions.txt drwxr-xr-x 2 1001 1002 4096 Sep 14 08:29 upload
sftp‘ getを使用してファイルをダウンロードしてみましょう ‘コマンド
sftp> get devops-actions.txt Fetching /devops-actions.txt to devops-actions.txt /devops-actions.txt 100% 155 0.2KB/s 00:00 sftp> sftp> cd /etc Couldn't stat remote file: No such file or directory sftp> cd /root Couldn't stat remote file: No such file or directory sftp>
上記の出力は、sftpサーバーからローカルマシンにファイルをダウンロードできることを確認し、これとは別に、ユーザーがディレクトリを変更できないこともテストしました。
「アップロード」の下にファイルをアップロードしてみましょう 」フォルダ、
sftp> cd upload/ sftp> put metricbeat-7.3.1-amd64.deb Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb metricbeat-7.3.1-amd64.deb 100% 38MB 38.4MB/s 00:01 sftp> ls -l -rw-r--r-- 1 1001 1002 40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb sftp>
これにより、ローカルシステムからsftpサーバーにファイルが正常にアップロードされたことを確認できます。
次に、winscpツールを使用してSFTPサーバーをテストし、ユーザーの資格情報に沿ってsftpサーバーのIPアドレスを入力します。
[ログイン]をクリックして、ファイルのダウンロードとアップロードを試してください
次に、アップロードフォルダにファイルをアップロードしてみます
上のウィンドウは、アップロードも正常に機能していることを確認しています。これはすべてこの記事からのものです。これらの手順がDebian10でchroot環境を使用してSFTPサーバーを構成するのに役立つ場合は、フィードバックとコメントを共有してください。