linux mint cinnamonのPCにFTPサーバを構築

linux mint cinnamonのPCにFTPサーバを構築する手順?

了解です 👍
Linux Mint Cinnamon(=Ubuntu系)なら、vsftpd を使うのがいちばん簡単で安定します。
ここでは「自宅PCにFTPサーバを立てて、LAN内や外部から接続する」想定で、順番にいきます。


  1. 全体の流れ
  2. 1. vsftpd をインストール
  3. 2. 設定ファイルをバックアップ
  4. 3. vsftpd の基本設定
    1. 最低限おすすめの設定
  5. 4. vsftpd を再起動&自動起動
  6. 5. ファイアウォール設定(UFW)
  7. 6. 動作確認(FTPクライアント)
    1. FileZilla(おすすめ)
  8. よくある注意点
    1. 🔐 セキュリティ
    2. 📁 アップロード先
  9. 発展編(必要なら)
  10. まず結論(よくある原因)
  11. ① vsftpd が 2121 を使う設定になっているか
    1. 必ず入っているか確認
  12. ② 本当に 2121 で待ち受けているか確認(重要)
    1. 正常ならこう出ます
  13. ③ ファイアウォール(UFW)の設定
  14. ④ FTPクライアント側の設定確認
  15. ⑤ ローカルからテスト(切り分け)
  16. ⑥ それでもダメな場合(念のため)
  17. ここまでで99%直ります
  18. 何が起きているか(超要約)
  19. 解決策①(いちばん簡単・おすすめ)
    1. FileZilla 側で UTF-8 を強制する
  20. 解決策② vsftpd 側で UTF-8 を明示する(重要)
    1. 以下を追加 or 確認
  21. 解決策③ ロケール確認(Linux Mint側)
    1. 正常例
  22. それでも直らない場合(最終手段)
  23. なぜFTPはこうなりやすい?
  24. 個人的おすすめ(余談)
  25. まず確認したいポイント(vsftpd側)
    1. 必須
  26. 本命:FileZilla 側の設定(ここが決定打)
    1. 方法①(サイトごとに設定・おすすめ)
    2. 方法②(全体設定)
  27. それでも直らない場合(かなりレア)
    1. FileZilla が OPTS UTF8 ON を無視している可能性
      1. 確認方法
  28. 念押し(vsftpdの完全UTF-8構成例)
  29. なぜロケールが正常でも化ける?
  30. もし今後も日本語ファイル名を使うなら
    1. 🔐 SFTP(SSH)
  31. SFTPって何?
  32. 全体の流れ
  33. ① サーバー側:SSH確認
    1. 出力例(OK)
  34. ② SSHを自動起動に
  35. ③ ファイアウォール設定
  36. ④ FileZilla(クライアント側設定)
    1. サイトマネージャー設定
  37. ⑤ 動作確認(CLI)
  38. ⑥(任意)超おすすめ:公開鍵認証(パスワード不要)
    1. クライアント側
    2. サーバー側確認
  39. ⑦(任意)パスワードログイン無効化(強化)
  40. ⑧ FTPはもう不要なら
  41. まとめ(正直な比較)
  42. まず大事な前提(超重要)
  43. 構成イメージ
  44. ① SFTP専用グループ作成
  45. ② SFTP用ユーザー作成(既存ユーザーでもOK)
    1. 新規ユーザーの場合
    2. 既存ユーザーを使う場合
  46. ③ chrootディレクトリ作成
    1. 権限設定(ここ重要)
  47. ④ SSH(SFTP)設定
    1. 末尾に追加
  48. ⑤ SSH再起動
  49. ⑥ 動作確認
    1. CLI
  50. ⑦ FileZilla設定
  51. よくある失敗(超重要)
    1. ❌ chroot先を user 所有にしている
    2. ❌ 書き込み可能にしている
  52. 応用パターン
    1. ユーザーごとに完全分離
  53. まとめ(これだけ覚えればOK)

全体の流れ

  1. vsftpd をインストール
  2. 基本設定(ローカルユーザーでログイン)
  3. 書き込み許可・セキュリティ設定
  4. サービス起動&自動起動
  5. ファイアウォール設定
  6. 動作確認(FTPクライアントから接続)

1. vsftpd をインストール

ターミナルを開いて👇

sudo apt update
sudo apt install vsftpd

インストール確認:

vsftpd -v

2. 設定ファイルをバックアップ

念のため元に戻せるようにしておきます。

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

3. vsftpd の基本設定

設定ファイルを編集します。

sudo nano /etc/vsftpd.conf

最低限おすすめの設定

以下を 確認 or 変更 してください。

# ローカルユーザーのログイン許可
local_enable=YES

# 書き込み許可(アップロード・削除など)
write_enable=YES

# アップロード時のパーミッション
local_umask=022

# ログ有効化
xferlog_enable=YES

# ローカルユーザーをホームディレクトリに閉じ込める(重要)
chroot_local_user=YES

# chroot時のエラー回避
allow_writeable_chroot=YES

💡
これで
Linux Mint のユーザー名 / パスワード
でFTPログインできるようになります。

保存:Ctrl + O → Enter
終了:Ctrl + X


4. vsftpd を再起動&自動起動

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

状態確認:

systemctl status vsftpd

active (running) になっていればOK ✅


5. ファイアウォール設定(UFW)

MintでUFWを使っている場合👇

sudo ufw allow 21/tcp
sudo ufw reload

確認:

sudo ufw status

6. 動作確認(FTPクライアント)

別PC or 同一PCから確認します。

FileZilla(おすすめ)

  • ホスト:Linux MintのIPアドレス
  • ユーザー名:Linuxのユーザー名
  • パスワード:Linuxのパスワード
  • ポート:21

接続できれば成功 🎉

IPアドレス確認:

ip a

または

hostname -I

よくある注意点

🔐 セキュリティ

  • FTPは 平文通信(危険)
  • 外部公開するなら FTPS(TLS) 推奨

📁 アップロード先

  • 初期状態では /home/ユーザー名/
  • 書き込み権限がないとアップロード不可

発展編(必要なら)

  • FTPS(暗号化)設定
  • FTP専用ユーザー作成
  • 特定ディレクトリだけ公開
  • 外部(インターネット)から接続(ルータ設定)

必要なら次は
👉「FTPSにしたい
👉「LAN内だけで使いたい
👉「WordPress用に使いたい
どれ行くか教えてください 😊

“ECONNREFUSED – サーバーによって接続が拒否されました” への接続の試行が失敗しました。 というエラーになりました。 なおポートは21を2121に変更しました。

OK、状況かなり絞れます 👍
ECONNREFUSED は「そのポートで待ち受けているサービスが無い」か「ファイアウォールで拒否」のどちらかです。
2121に変更した場合にやるべきチェックを順に潰します。


まず結論(よくある原因)

👉 vsftpd が 2121 で待ち受けていない
👉 UFW が 2121 を許可していない

この2つが9割です。


① vsftpd が 2121 を使う設定になっているか

設定ファイルを開きます。

sudo nano /etc/vsftpd.conf

必ず入っているか確認

listen=YES
listen_ipv6=NO
listen_port=2121

⚠️ listen_port=2121 が無いと 21番のまま になります。

保存後👇

sudo systemctl restart vsftpd

② 本当に 2121 で待ち受けているか確認(重要)

sudo ss -lntp | grep vsftpd

正常ならこう出ます

LISTEN 0 32 0.0.0.0:2121

❌ 何も出なければ
設定ミス or vsftpd が起動していない

状態確認:

systemctl status vsftpd

③ ファイアウォール(UFW)の設定

21番は開けても 2121は別 です。

sudo ufw allow 2121/tcp
sudo ufw reload
sudo ufw status

例:

2121/tcp ALLOW Anywhere

④ FTPクライアント側の設定確認

FileZillaなどで👇

項目
ホストLinux Mint のIP
ユーザー名Linuxのユーザー
パスワードLinuxのパスワード
ポート2121
プロトコルFTP
暗号化平文FTP(とりあえず)

⑤ ローカルからテスト(切り分け)

Mint自身から接続テスト👇

ftp localhost 2121
  • これが 通る → ネットワーク or ファイアウォール問題
  • これも 拒否 → vsftpd設定ミス

⑥ それでもダメな場合(念のため)

vsftpdを完全再起動:

sudo systemctl stop vsftpd
sudo systemctl start vsftpd

ログ確認:

sudo journalctl -u vsftpd -n 50

ここまでで99%直ります

なので次に教えてほしいのは👇
この2点だけでOKです

1️⃣ sudo ss -lntp | grep vsftpd の結果
2️⃣ systemctl status vsftpd の状態

それ見れば、ピンポイントで原因確定できます 😉

FTPは

おっと、途中送信っぽいですね 👀
「FTPは……」の続き、どれに近いですか?

1️⃣ FTPは接続できた/できない(結果の報告)
2️⃣ FTPは危険?使って大丈夫?(セキュリティの話)
3️⃣ FTPは使えたけど、アップロードできない
4️⃣ FTPは外部(LAN外)から使いたい
5️⃣ FTPはやめてFTPS / SFTPにしたい

番号だけでもOKです。
そこから一気に続きを詰めます 👍

FTPは問題なく繋がりました。 確かにデフォルトのポートを変更したらその設定は必要でしたね。 なおFTPクライアントの方の画面には文字が化けてしまっています。 クライアントの方のPCもLinux Mint CinnamonでFTPクライアントはFileZillaを使用しています。 エンコードが合ってないのでしょうね。 化けた文字は「ダウンロード」のようになっています。

おお、接続成功おめでとうございます 🎉
ここまで来たらあと一息です。
その文字化け、完全に「文字コード(UTF-8)が噛み合ってない」典型例ですね。


何が起きているか(超要約)

表示されている

ダウンロード

これは👇
本来 「ダウンロード」 であるべき UTF-8 日本語を
ISO-8859-1(Latin-1)として誤解釈したときの見え方です。

つまり
👉 サーバーとクライアントのUTF-8交渉がうまくいっていない


解決策①(いちばん簡単・おすすめ)

FileZilla 側で UTF-8 を強制する

FileZilla で👇

  1. 編集
  2. 設定
  3. 言語
  4. 「サーバーからのファイル名を UTF-8 として扱う」

FileZilla日本語UIだと表記はだいたい👇です:

☑ サーバーからのファイル名を UTF-8 として扱う

✔ 設定後、一度切断して再接続

👉 これで直ることがほとんどです。


解決策② vsftpd 側で UTF-8 を明示する(重要)

サーバー側も念押しします。

sudo nano /etc/vsftpd.conf

以下を追加 or 確認

utf8_filesystem=YES

保存後👇

sudo systemctl restart vsftpd

解決策③ ロケール確認(Linux Mint側)

念のため両PCで確認してください。

locale

正常例

LANG=ja_JP.UTF-8
LC_ALL=

もし CPOSIX になっていたら👇

sudo update-locale LANG=ja_JP.UTF-8

再ログイン後に反映されます。


それでも直らない場合(最終手段)

FileZillaの サイトマネージャー個別設定 を使います。

  1. ファイル → サイトマネージャー
  2. 対象サーバー選択
  3. 文字コード
  4. 強制 UTF-8」を選択
  5. 接続し直す

なぜFTPはこうなりやすい?

FTPは 古いプロトコル

  • 文字コードの標準が曖昧
  • UTF-8は後付け

なので日本語ファイル名は 毎回この罠にハマりがちです 😅


個人的おすすめ(余談)

今後ずっと使うなら👇

  • SFTP(SSH) → 文字化けしない・安全
  • 同じFileZillaで使える
  • 設定も簡単

必要なら
👉「SFTPに切り替える手順
👉「vsftpdでFTPS化
どっちもすぐ書けますよ 👍

クライアント側のロケール LANG=ja_JP.UTF-8 LANGUAGE=ja_JP LC_CTYPE=”ja_JP.UTF-8″ LC_NUMERIC=”ja_JP.UTF-8″ LC_TIME=”ja_JP.UTF-8″ LC_COLLATE=”ja_JP.UTF-8″ LC_MONETARY=”ja_JP.UTF-8″ LC_MESSAGES=”ja_JP.UTF-8″ LC_PAPER=”ja_JP.UTF-8″ LC_NAME=”ja_JP.UTF-8″ LC_ADDRESS=”ja_JP.UTF-8″ LC_TELEPHONE=”ja_JP.UTF-8″ LC_MEASUREMENT=”ja_JP.UTF-8″ LC_IDENTIFICATION=”ja_JP.UTF-8″ LC_ALL= サーバー側のロケール LANG=ja_JP.UTF-8 LANGUAGE= LC_CTYPE=”ja_JP.UTF-8″ LC_NUMERIC=”ja_JP.UTF-8″ LC_TIME=”ja_JP.UTF-8″ LC_COLLATE=”ja_JP.UTF-8″ LC_MONETARY=”ja_JP.UTF-8″ LC_MESSAGES=”ja_JP.UTF-8″ LC_PAPER=”ja_JP.UTF-8″ LC_NAME=”ja_JP.UTF-8″ LC_ADDRESS=”ja_JP.UTF-8″ LC_TELEPHONE=”ja_JP.UTF-8″ LC_MEASUREMENT=”ja_JP.UTF-8″ LC_IDENTIFICATION=”ja_JP.UTF-8″ LC_ALL= 以上です。

ありがとうございます、これで状況は ほぼ確定 です 👍
ロケールは クライアント/サーバー両方とも完全に正常(UTF-8)
つまり原因は OSではなく FTPプロトコル+FileZilla / vsftpd のUTF-8交渉 です。

結論から言うと👇

FileZilla が UTF-8 を自動判定せず、Latin-1 として表示している

なので「強制指定」で直します。


まず確認したいポイント(vsftpd側)

すでにやっているかもですが、これが無いと必ず化けます

sudo nano /etc/vsftpd.conf

必須

utf8_filesystem=YES

確認したら👇

sudo systemctl restart vsftpd

本命:FileZilla 側の設定(ここが決定打)

方法①(サイトごとに設定・おすすめ)

  1. ファイル → サイトマネージャー
  2. 該当サーバーを選択
  3. 上のタブ 「文字コード」
  4. 「強制 UTF-8」
  5. OK
  6. 一度切断 → 再接続

👉 これで 100%直るケースがほとんど です。


方法②(全体設定)

  1. 編集 → 設定
  2. 言語
  3. サーバーからのファイル名を UTF-8 として扱う
  4. 再接続

※ 方法①の方が確実です。


それでも直らない場合(かなりレア)

FileZilla が OPTS UTF8 ON を無視している可能性

確認方法

FileZilla の下部ログに👇が出ているか見てください:

Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.

これが無ければ サーバーがUTF-8モードを宣言していない 状態です。


念押し(vsftpdの完全UTF-8構成例)

listen=YES
listen_ipv6=NO
listen_port=2121
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
utf8_filesystem=YES

なぜロケールが正常でも化ける?

FTPは👇

  • ファイル名の文字コード仕様が曖昧
  • UTF-8は 拡張オプション
  • クライアントが「相手を信用しない」と勝手にLatin-1扱い

つまり
👉 FileZillaの問題というよりFTPの古さです 😅


もし今後も日本語ファイル名を使うなら

正直なおすすめは👇

🔐 SFTP(SSH)

  • 文字化けゼロ
  • 暗号化あり
  • FileZillaそのまま使える
  • 設定が超シンプル

Linux Mint 同士なら vsftpdを使い続ける理由はほぼ無い です。

必要なら次👇
👉 「SFTPへ移行する手順(Mint→Mint)」
👉 「vsftpdをFTPS化する手順」

どっち行きます?

「方法①」で解消しました。 「SFTPへ移行する手順(Mint→Mint)」でお願いします。

よっしゃ、解消おめでとうございます 🎉
じゃあ次は SFTP(Mint → Mint)
これは正直、FTPより簡単・安全・文字化けなし で、いちどやると戻れません。


SFTPって何?

  • SSH上で動くファイル転送
  • 文字コード問題なし(UTF-8そのまま)
  • 暗号化あり
  • vsftpd不要
  • FileZillaそのまま使える

Linux Mint なら ほぼ設定済み です。


全体の流れ

  1. サーバー側:SSHが入っているか確認
  2. サーバー側:SSHを有効化
  3. ファイアウォール設定
  4. FileZillaでSFTP接続
  5. (任意)セキュリティ強化

① サーバー側:SSH確認

Mintサーバーで👇

sudo systemctl status ssh

出力例(OK)

Active: active (running)

もし無ければ👇

sudo apt install openssh-server

② SSHを自動起動に

sudo systemctl enable ssh
sudo systemctl restart ssh

③ ファイアウォール設定

SSHは 22番ポート

sudo ufw allow 22/tcp
sudo ufw reload
sudo ufw status

※ ポート変更してるならその番号を許可。


④ FileZilla(クライアント側設定)

サイトマネージャー設定

  1. ファイル → サイトマネージャー
  2. 新しいサイト作成
  3. 設定👇
項目
プロトコルSFTP – SSH File Transfer Protocol
ホストサーバーのIP
ポート22
ログオンタイプ通常
ユーザーLinuxユーザー名
パスワードLinuxパスワード
  1. 接続

👉 これで /home/ユーザー名 が表示されます。


⑤ 動作確認(CLI)

クライアント側Mintで👇

sftp ユーザー名@サーバーIP

ログインできれば完璧。


⑥(任意)超おすすめ:公開鍵認証(パスワード不要)

クライアント側

ssh-keygen -t ed25519

(全部EnterでOK)

ssh-copy-id ユーザー名@サーバーIP

サーバー側確認

ls ~/.ssh/authorized_keys

⑦(任意)パスワードログイン無効化(強化)

サーバー側👇

sudo nano /etc/ssh/sshd_config

変更:

PasswordAuthentication no

再起動:

sudo systemctl restart ssh

⚠️ 必ず鍵ログイン成功を確認してから!


⑧ FTPはもう不要なら

sudo systemctl stop vsftpd
sudo systemctl disable vsftpd

まとめ(正直な比較)

項目FTPSFTP
文字化け起きやすい起きない
暗号化なしあり
設定やや面倒超簡単
おすすめ度⭐⭐⭐⭐⭐

sftpのルートディレクトリの設定方法は?

いいところ来ました 👍
SFTPの「ルートディレクトリ固定」= chroot 設定ですね。
Linux Mint(=Ubuntu系)の OpenSSH標準機能だけで可能です。

ここでは
👉 特定ユーザーを /home/sftp に閉じ込める
👉 FileZilla / sftp 両対応
という安全・王道構成で説明します。


まず大事な前提(超重要)

SFTP の chroot には 厳格なルールがあります。

chroot先ディレクトリは root所有 & 書き込み不可
ユーザーはその中のサブディレクトリにだけ書き込める

これを守らないと ログイン即切断 されます。


構成イメージ

/home/sftp           ← ルート(root:root, 書き込み不可)
└── user1
    └── upload       ← 実作業ディレクトリ(user1が書込可)

① SFTP専用グループ作成

sudo groupadd sftpusers

② SFTP用ユーザー作成(既存ユーザーでもOK)

新規ユーザーの場合

sudo useradd -m -g sftpusers -s /usr/sbin/nologin user1
sudo passwd user1

既存ユーザーを使う場合

sudo usermod -aG sftpusers user1

③ chrootディレクトリ作成

sudo mkdir -p /home/sftp/user1/upload

権限設定(ここ重要)

sudo chown root:root /home/sftp
sudo chmod 755 /home/sftp

sudo chown root:root /home/sftp/user1
sudo chmod 755 /home/sftp/user1

sudo chown user1:sftpusers /home/sftp/user1/upload
sudo chmod 755 /home/sftp/user1/upload

④ SSH(SFTP)設定

sudo nano /etc/ssh/sshd_config

末尾に追加

Match Group sftpusers
    ChrootDirectory /home/sftp
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

⑤ SSH再起動

sudo systemctl restart ssh

⑥ 動作確認

CLI

sftp user1@サーバーIP

ログイン後👇

pwd

表示:

/
cd user1/upload
put test.txt

👉 / から外に出られなければ成功 🎉


⑦ FileZilla設定

項目
プロトコルSFTP
ホストサーバーIP
ユーザーuser1
パスワード設定したもの
ポート22

接続直後の表示は /
実体は /home/sftp です。


よくある失敗(超重要)

❌ chroot先を user 所有にしている

chown user1:user1 /home/sftp   ← ダメ

👉 root:root じゃないと即切断


❌ 書き込み可能にしている

chmod 775 /home/sftp   ← ダメ

応用パターン

ユーザーごとに完全分離

ChrootDirectory /home/sftp/%u

ディレクトリ:

/home/sftp/user1/upload
/home/sftp/user2/upload

まとめ(これだけ覚えればOK)

  • chrootは SSH標準機能
  • ルートは root所有・書込不可
  • 作業用サブディレクトリを作る
  • Match Group が安全で管理しやすい