やりたいこと
Wordpressサーバの構築の際に、wordpressコンテンツのみ参照できるftpユーザを作成したい為、覚書を作成。
誰かに役に立てばいいと思います。
サーバ環境
OS:CentOS Linux 7(core)
rootディレクトリ:/var/www/html/public_html
確認すること
- vsftpdのインストール
- ftpユーザの作成
- ftpユーザのキーを作成(sftp接続のため)
- まずssh接続の確認
- sftp接続を確認
- sshを禁止
- ユーザの作業ディレクトリとコンテンツをマウント
- コンテンツの権限を変更
手順
vsftpdのインストール
yum install vsftpd
インストールの確認
yum info vsftpd
ftpユーザ作成
useradd -m sftp-user
ftpユーザのパスワード設定
passwd sftp-user
ftpユーザのキー作成
cd /home/sftp-user/
ssh-keygen -t rsa
ftpユーザのキー作成
cd /home/sftp-user/
ssh-keygen -t rsa
chmod 600 ~/.ssh/id_rsa.pub
mv id_rsa.pub authorized_keys
秘密鍵はlocalに転送し、権限変更
chmod 600 ~/.ssh/id_rsa
ssh接続の確認
ssh -i ~/.ssh/id_rsa sftp-user@[PublicIP]
sftp接続の確認
sftp -i ~/.ssh/id_rsa sftp-user@[PublicIP]
ssh禁止設定にする
sudo su
vim /etc/ssh/sshd_config
下記に修正、追記する
/etc/ssh/sshd_config
# override default of setting on a per-user basic
# Subsystem sftp /usr/libexec/openssh/sftp-server // コメントアウト
Subsystem sftp internal-sftp -f LOCAL5 -l VERBOSE // 追記
Match group sftp-user // 下まで追記
ChrootDirectory /home/sftp-user/public_html
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
ForceCommand internal-sftp
ssh接続できないことの確認
ssh -i ~/.ssh/id_rsa sftp-user@[PublicIP]
下記が出れば、設定完了
This service allows sftp connnection only.
sftp-userのディレクトリとコンテンツディレクトリをマウント
まずユーザ配下に、作業ディレクトリを作成
mkdir /home/sftp-user/public_html
コンテンツディレクトリとマウント
mount /var/www/html/public_html /home/sftp-user/public_html
サーバ再起動後もマウントさせる為に、設定を追記
vim /etc/fstab
/etc/fstab
/var/www/html/public_html /home/sftp-user/public_html none bind 0 0
sftp-userが参照や転送できるように権限変更
chmod 755 /home/sftp-user
chown root:root /home/sftp-user
chmod 775 /home/sftp-user/public_html
chown root:sftp-user /home/sftp-user/public_html
これでsftp-userは、自分の作業ディレクトリのみ参照できる権限のため、上位ディレクトリに移動できない。
sftpでログインした際の初期ディレクトリは、/home/sftp-user/public_html
になる。
FTPクライアント
FilezillaというFTPクライアントで検証済みです。
https://filezilla-project.org/