Laravel ForgeでSFTPの設定をする

Laravel ForgeでFTPを使いたくなり、調べたことをメモしています。

まずはForgeを使うにあたって、初期構築時に通知されたsudoパスワードを控えておきます。

またサーバーOSはUbuntu 22.04で検証しています。

SFTPの設定にあたっては、下記の記事を参考にさせていただきました。

https://chaingng.github.io/post/sftp_chroot/

サーバーのユーザーを作成する

まずはユーザーを作成します。

デフォルトではforgeユーザーしかいませんので、FTP専用のユーザーを作ります。

adduserコマンドではプロンプトが出てしまうので、以下のようにするとスクリプト化するときに便利です。

sudo adduser --disabled-password --gecos "" username

鍵の設定をする

作成したユーザーをSSHでアクセスできるように鍵の設定をします。

sudo mkdir /home/username/.ssh
sudo touch /home/username/.ssh/authorized_keys

authorize_keysに公開鍵を登録しましょう。

ここまでで、sshコマンドを使ってログインができるようになります。

SFTPの設定をする

chrootを利用するため、新しく作成したホームディレクトリの所有権をrootに変更します。

またパーミッションの変更を行います。

sudo chown root:root /home/username
sudo chmod 655 /home/username

今回はSFTPを使いたいので、SSHでアクセスできないようにします。

/etc/ssh/sshd_config で次のように追記します。

Match User username
  ChrootDirectory /home/%u
  ForceCommand internal-sftp

sshdの設定を反映させます。

sudo systemctl restart sshd

SSHで接続できないことを確認します。

This service allows sftp connections only.
Connection to xxx.xxx.xxx.xxx closed.

Filezillaなどを使って、SFTPでログインできることを確認します。

静的ファイルディレクトリを設定する

まずはLaravelのpublicフォルダにディレクトリを作成します。

次の例ではlpというディレクトリを作成して、新しいユーザーの所有権に変更しています。

mkdir /home/forge/your_laravel_app/public/lp
sudo chown username.username /home/forge/your_laravel_app/public/lp

FTPソフトから見えるようにするため、新しいユーザーのホームに空のディレクトリを作り、そこに先ほどLaravel側に作成したディレクトリをマウントをします。

sudo mkdir /home/username/lp
sudo mount --bind /home/forge/your_laravel_app/public/lp /home/username/lp

システム開発のご相談はお気軽に

要件定義から運用まで、お客様のビジネスに最適なシステムをご提案いたします。
まずはお気軽にご相談ください。

初回相談無料 お見積もり無料 土日対応
今月の見積もり受付、残り2社様です

小さな会社なので、お客様一社一社に丁寧に向き合うため、
同時にお受けできる案件数に限りがございます

お問い合わせ・ご相談
先月32件のご相談

お探しの情報は見つかりましたか?

ご不明な点やご相談したいことがございましたら、
お気軽にお問い合わせください。

無料相談 オンライン対応 営業電話なし
お問い合わせはこちら