はじめに
ローカルネットワーク上のサブマシンとのデータのやり取りが面倒でしたのでFTPで行う事にしました。
その時の設定のメモです。
基本的に以下の記述をそのまま実行しただけです。
環境
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
vsftpd
FTPサーバとしてvsftpdを使うことにした。
インストール
sudo apt install vsftpd
vsftpd: version 3.0.5
証明書の準備
以下のコマンドで作成。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
設定
始めに設定ファイルのバックアップを行う。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_default
そして、/etc/vsftpd.conf
を編集し、以下を追加する。
anonymous_enable=NO
write_enable=YES
local_enable=YES
chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
xferlog_std_format=NO
コマンド
ログの確認
ログは、デフォルトで以下に出力される。
/var/log/vsftpd.log
sudo cat /var/log/vsftpd.log
サービスの起動
sudo systemctl start vsftpd
サービスの再起動
sudo systemctl restart vsftpd
サービスの終了
sudo systemctl stop vsftpd
サービスの状態確認
sudo systemctl status vsftpd
サービスの自動起動登録
sudo systemctl enable vsftpd
サービスの自動起動解除
sudo systemctl disable vsftpd
サービスの自動起動確認
sudo systemctl is-enabled vsftpd
FTP用のフォルダの準備
<username>
は、実際のユーザ名に置き換える。
sudo mkdir ftp
sudo chown nobody:nogroup ~/ftp
sudo chmod a-w ~/ftp
sudo mkdir ~/ftp/files
sudo chown <username>:<username> ~/ftp/files
ufw
念のためにファイヤーウォールの設定も行っておく。
設定
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
コマンド
ufwの状態確認
sudo ufw status
ufwの有効化
sudo ufw enable
設定の再読み込み
sudo ufw reload
クライアント
クライアントとしてFileZillaをインストール。
- ホストにサブマシンのローカルIPアドレスを入力
- サブマシンのユーザ名とパスワードを入力
証明書を信頼するかどうかのメッセージが表示されるので、内容を確認して信頼する。
これで問題なく接続できた。