LoginSignup
2
0

LightsailでSFTPを利用してWordpressだけメンテさせる

Posted at

はじめに

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開発関連で、ライトな開発や、ちょっと、こんな事を自動化したい!等も、お気軽に問い合わせください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0