はじめに
Lightsailで、Wordpressのコンテンツ制作を外部の会社さんに委託するにあたって~の続編です。
SFTPでWordpress配下のコンテンツメンテがしたい!ってことで、lightsailにSFTPを解放するための手順メモです。
AWSさんのre:Postに掲載されてる手順
SFTPしたいだけなら、上記の手順で、まったく問題ありませんでした。
※ 上記の掲載URLを見失いがちなので、メモ書き。。。
今回は、「SSH キーベースの認証」の方で設定しました。
※re:Postの記事が消えてしまうと困るので手順&コマンドをメモ書き
SFTP ユーザーのグループを作成
SFTP ユーザーのグループを作成します。このグループは、多くの異なる SFTP ユーザーの管理に役立ちます。この例では、グループ名は sftp_group です。名前は、任意のグループ名に変更できます。
sudo groupadd sftp_group
SFTP ユーザー作成
ホームディレクトリを持つインスタンスでユーザーを作成します。このユーザーは SFTP タスクのみを実行し、SSH ログインシェルを持ちません。次の例では、sftp_user を任意のユーザー名に置き換えます。
sudo useradd -g sftp_group -m -d /home/sftp_user -s /sbin/nologin sftp_user
公開キーの作成
<参考>
上記のページの、一部を手順として利用します。
lightsailのブラウザコンソール上から、下記のコマンドでキーを生成します。
ssh-keygen -t rsa
作ったキー(公開キー:次の手順で許可に追加、プライベート気:クライアント側に持って行って接続用に利用)が必要となります。
SSH キーベースの認証
SSH キーベースの認証を使用している場合は、ユーザーの SSH ファイルを作成し、公開キーをファイルに追加する必要があります。これを行うには、以下を実行します。
ユーザーのホームディレクトリで、.ssh フォルダと authorized_keys ファイルを作成します。
sudo mkdir /home/sftp_user/.ssh
sudo touch /home/sftp_user/.ssh/authorized_keys
使用する SSH 公開キー(1個前の手順で作った物)を /home/sftp_user/.ssh/authorized_keys ファイルに追加します。
パーミッションの調整(その1)
次のコマンドを実行して、ユーザーのホームディレクトリの所有権と許可を変更します。
sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -R
sudo chown root:sftp_group /home/sftp_user/
sudo chmod 755 /home/sftp_user/
sudo chmod 700 /home/sftp_user/.ssh/
sudo chmod 600 /home/sftp_user/.ssh/authorized_keys
前述の例では、/home/sftp_user ディレクトリで許可 755 を使用し、所有権を root ユーザーに変更しています。これは、ディレクトリが chroot ディレクトリとして使用されるためです。パス名のすべてのコンポーネントは、他のユーザーまたはグループによる書き込みが不可となっているルート所有のディレクトリでなければならないことに注意してください。
sshdデーモンの設定
sudo vi /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server 行をコメントアウトして、Subsystem sftp 行を変更します。
# Subsystem sftp /usr/libexec/openssh/sftp-server
前述の行を次と置き換えます。
Subsystem sftp internal-sftp
SFTP ユーザーのアクセスを制限するディレクティブを追加します。次のディレクティブは、ファイルの末尾に追加する必要があります。
Match Group sftp_group
ChrootDirectory /home/%u
ForceCommand internal-sftp
前述の例では、ChrootDirectory ディレクティブを使用して SFTP ユーザーのルートディレクトリ (chroot jail) を指定しています。ユーザーが sftp_group に属するマッチブロックは、パス /home/%u をルートディレクトリとして使用します。文字 %u はユーザーを表します。ユーザーのルートディレクトリを変更できます。
ForceCommand internal-sftp ディレクティブは、インプロセス SFTP サーバーの使用を強制します。
パーミッションの調整(その2)
ユーザーが使用する chroot ディレクトリを作成します。ディレクトリ名 sftp_user、および uploads を、任意の名前でを置き換えます。
sudo mkdir /home/sftp_user/uploads
sudo chown sftp_user:sftp_group /home/sftp_user/uploads
確認
ls -ld /home
drwxr-xr-x 3 root root 23 Oct 6 15:17 /home
ls -ld /home/sftp_user
drwxr-xr-x 3 root sftp_group 21 Oct 6 15:17 /home/sftp_user
ls -ld /home/sftp_user/uploads/
drwxr-xr-x 2 sftp_user sftp_group 6 Oct 6 15:17 /home/sftp_user/uploads/
sshdデーモンの再起動
sudo systemctl restart sshd
Wordpress配下をSCP経由でメンテナンスできるようにする
mountをバイントオプション(-B)をつけて実行する。
mount -B /bitnami/wordpress/wp-content /home/sftp_user/uploads/wp-content
また、「/etc/fstab」に、起動時に自動マウントされるようにしておく。
/bitnami/wordpress/wp-content /home/sftp_user/uploads/wp-content bind 0 0
を追記する。
パーミッションの調整(その3)
lightsailデフォルトの、グループ権限は「daemon」なのでSFTP用ユーザをグループに加えておく。
usermod -aG daemon sftp_user
AWSの相談・お困りごとありましたら、、、
AWSの活用方法や、お困りごとの相談、随時、お仕事の受付しております。
AWSのLambda開発関連で、ライトな開発や、ちょっと、こんな事を自動化したい!等も、お気軽に問い合わせください。