この記事では、ホームディレクトリに制限または投獄されているセキュアなSSHファイル転送プロトコル(SFTP)ユーザーを作成する方法を説明します。
警告 :rootユーザーを投獄しようとしないでください。 rootユーザーが正しく操作を実行できなくなることがないように、追加のユーザーのみを投獄します。
始める前に、次のベストプラクティスを確認してください。
-
SFTPユーザーのホームディレクトリは、
root:root
が所有している必要があります 。他のディレクトリは、ユーザーが所有(および書き込み可能)できます(また、書き込み可能である必要があります)。 -
chrootユーザーが指定されたDocumentRootへの書き込みアクセス権を持っていることを確認することが重要です。
-
ログインして、SFTPユーザーが正しく機能していることをテストすることが重要です。
-
追加したSFTPユーザーがSFTPグループに追加されていることを確認することが重要です。
-
これらの手順は、単一のドメイン(SFTPユーザー)を追加するためのものですが、複数のドメインを管理するために使用できる可能性があります。
重要 :この記事の手順は、RHEL®7またはCentOS®7では機能しません。適切なchroot操作と同様に、この構成ではchrootディレクトリへの書き込みアクセスは提供されません。 chrootjailのサブディレクトリのみが書き込み可能です。これは、ルート権限がSFTPユーザーが含まれている上位レベルのディレクトリで解釈される方法によるものです。
次の手順を使用して、ホームディレクトリに投獄される安全なSFTPユーザーを作成します。
-
次のコマンドを実行して、SFTPアクセスに使用するSFTPグループを追加します。
groupadd sftponly
-
myuser
を置き換えて、次のコマンドを実行してSFTPユーザーを追加します ユーザー名:useradd -d /var/www/vhosts/domain.com -s /bin/false -G sftponly myuser
-
myuser
を置き換えて次のコマンドを実行し、ユーザーのパスワードを作成します ユーザー名:passwd myuser
-
sshd_config
を開きます 次のコマンドを実行して、SSHおよびSFTP構成を保持するファイル:nano /etc/ssh/sshd_config
-
次の例に示すように、先頭にハッシュ記号(#)を追加して、次の行をコメント化します。
#Subsystem sftp /usr/lib/openssh/sftp-server
-
コメントアウトした行のすぐ下に次の行を追加します。
Subsystem sftp internal-sftp
-
次のコードをファイルの最後に追加します。
Match Group sftponly ChrootDirectory %h X11Forwarding no AllowTCPForwarding no ForceCommand internal-sftp
-
sshd
を実行します コマンドを使用して変更をテストしてから、サービスを再起動します。重要 :この手順を正しく実行しないと、SSHD構成が破損する可能性があります。
sshd -t service sshd restart
次に、SFTPジェイルが正しく機能するように、ファイルシステムのファイル権限が正しいことを確認する必要があります。
-
SFTPROOT
を確認します ディレクトリ(SSHユーザーを追加したときに設定したホームディレクトリ)には、適切なuser:root group:root
があります。 次のコマンドを実行して権限を付与します:chown root:root /var/www/vhosts/mywebsite.com/
-
SFTPログインが機能することを確認するには、次のコマンドを実行してSFTPに接続し、
myuser
を置き換えます。 次の例に示すように、選択したユーザーを使用します。sftp myuser@localhost myuser@localhost's password: Connected to localhost.
-
次のコマンドを実行して、ディレクトリリストをテストします。
sftp> ls -al
出力は次の例のようになります。
drwxr-xr-x 3 0 0 4096 Sep 28 08:09 . drwxr-xr-x 3 0 0 4096 Sep 28 08:09 .. drwxr-xr-x 2 5001 33 4096 Sep 28 08:52 html -rw-r--r-- 1 0 0 0 Sep 28 08:09 test.php
注 :
cd
を使用します HTMLディレクトリ(/var/www/vhosts/mywebsite.com/html
にあります)に移動するコマンド ウェブサイトの「documentroot」はSSHSFTPユーザーのroot
の1レベル下にあるためです ディレクトリ。www-data
のため、この設定を使用する必要があります ユーザー(Webサーバーのユーザー)にはルートuser:group
があります そのファイルに対する権限。 -
次のコマンドを実行して、ファイルをアップロードする機能をテストします。
sftp> cd html sftp> put test.php Uploading test.php to /html/test.php test.php 100% 12K 20.0KB/s 00:00
-
次のコマンドを実行して、ファイルをダウンロードする機能をテストします。
sftp> get test.php Fetching /test.php to test.php
-
次のコマンドを実行して、現在の作業ディレクトリを表示します。
sftp> pwd Remote working directory: /html
SFTPは、
/var/www/vhosts/mywebsite.com/
内のファイルのみを参照します ディレクトリであり、このディレクトリを最上位のルート('/')ディレクトリと見なします。 -
次の手順を使用してSFTPに接続し、SFTPクライアントを設定します。
- Cyberduck®をインストールします。
- Cyberduckアプリケーションを開きます。
- ウィンドウの上部にある接続を開くのアイコンをクリックします 。
- ドロップダウンメニューで、 SFTP(SSHファイル転送プロトコル)を選択します 。
- サーバー内 [フィールド]に、サーバーのインターネットプロトコル(IP)アドレスを入力します。
- SFTPへの接続に使用するユーザー名とパスワードを入力します。
- [接続]をクリックします 。
重要 :ファイルのアクセス許可を変更した後は、必ずWebサイトをテストしてください。