SFTPユーザを作成する
今日は、LinuxサーバにてSFTPユーザを作成する手順を記載します。
参考サイトは以下です。
[ やりたいこと ]
やりたいことは、外部のエンジニアの方向けにSFTPユーザを作成して、閲覧できる階層を制限することです。
複数ユーザ間での特定ディレクトリ・ファイルの共用 を実施する場合、各ユーザアカウントをweb編集用グループに所属させて、webディレクトリにグループから書き込み可能な権限を付与して運用させます。
[ 実現方法 ]
・sshd_configでsftp専用のユーザーを作成(bashにはログインさせない)
・sshd_configでchrootでSFTPログイン時のルートディレクトリの変更(その配下しか見せない)
→ OpenSSHのサブシステムであるSFTPサーバ機能に備わっているchrootオプションを利用する場合は、chroot対象とするディレクトリが「rootユーザからのみ書き込みできる」必要があります。
chrootディレクトリより上位ディレクトリ(※)にあるディレクトリはシンボリックリンクとして利用できない( = /home/user01にchrootした場合は/var/www/htmlに対してはリンクを作成できない)ため、このような場合、「mount bind」オプションを使用します。
それでは手順にうつります。
前提
・OSユーザ名:test_ftp
・OSユーザを所属させたいOSグループ名:developer
・マウント先:
(ステージング)/var/www/html/stg.test-sample.jp
(本番)/var/www/html/www.test-sample.jp
作業手順
1.ユーザ作成
# useradd test_ftp # usermod -g developer test_ftp
→プライマリグループ変更
# usermod -aG test_ftp test_ftp
→サブグループ追加
# id test_ftp
→プライマリグループがdeveloper、サブグループがtest_ftpとなることを確認する
2.鍵作成
# sudo su - test_ftp # cd /home/test_ftp # mkdir .ssh # chmod 700 .ssh # cd .ssh # ssh-keygen -t rsa
→鍵を作成する、この際同時にパスフレーズを設定する
# cp -p id_rsa.pub authorized_keys # chmod 600 authorized_keys # cat id_rsa
→表示された秘密鍵をコピーしておき、exit → rootへ
3.ディレクトリ作成および権限設定
# cd /home/test_ftp # mkdir stg.test-sample.jp # mkdir www.test-sample.jp # chmod 755 /home/test_ftp/ # chown root.root /home/test_ftp/ # chown test_ftp.developer /home/test_ftp/stg.test-sample.jp # chown test_ftp.developer /home/test_ftp/www.test-sample.jp
4.マウントおよび/etc/fstabの編集
マウントコマンドの実行
# mount --bind /var/www/html/stg.test-sample.jp /home/test_ftp/stg.test-sample.jp # mount --bind /var/www/html/www.test-sample.jp /home/test_ftp/www.test-sample.jp
# vim /etc/fstab
→ 起動時の自動マウント設定として、以下を追加する
/var/www/html/stg.test-sample.jp /home/test_ftp/stg.test-sample.jp none bind 0 0
/var/www/html/www.test-sample.jp /home/test_ftp/www.test-sample.jp none bind 0 0
5.ファイル転送ユーザ設定(sshd設定)
# vim /etc/ssh/sshd_config
→以下を追加する
Match User test_ftp
ChrootDirectory /home/test_ftp
ForceCommand internal-sftp
# sshd -t # /etc/init.d/sshd reload
上記で反映されない場合はrestart
# service sshd restart
6.(接続元のIPを許可していない場合)セキュリティグループにて指定IP接続許可
マネジメントコンソールよりEC2のセキュリティグループに対して、指定IPの22番の許可する
7. 確認作業
Filezillaにて、作成したアカウントのドキュメントルートが指定したものになっている事、ドキュメントルートにファイルアップしたものが、マウント先にアップされる事を確認する。ポートはSFTPなので22番を指定する。