linux mint cinnamonのPCにFTPサーバを構築する手順?
了解です 👍
Linux Mint Cinnamon(=Ubuntu系)なら、vsftpd を使うのがいちばん簡単で安定します。
ここでは「自宅PCにFTPサーバを立てて、LAN内や外部から接続する」想定で、順番にいきます。
- 全体の流れ
- 1. vsftpd をインストール
- 2. 設定ファイルをバックアップ
- 3. vsftpd の基本設定
- 4. vsftpd を再起動&自動起動
- 5. ファイアウォール設定(UFW)
- 6. 動作確認(FTPクライアント)
- よくある注意点
- 発展編(必要なら)
- まず結論(よくある原因)
- ① vsftpd が 2121 を使う設定になっているか
- ② 本当に 2121 で待ち受けているか確認(重要)
- ③ ファイアウォール(UFW)の設定
- ④ FTPクライアント側の設定確認
- ⑤ ローカルからテスト(切り分け)
- ⑥ それでもダメな場合(念のため)
- ここまでで99%直ります
- 何が起きているか(超要約)
- 解決策①(いちばん簡単・おすすめ)
- 解決策② vsftpd 側で UTF-8 を明示する(重要)
- 解決策③ ロケール確認(Linux Mint側)
- それでも直らない場合(最終手段)
- なぜFTPはこうなりやすい?
- 個人的おすすめ(余談)
- まず確認したいポイント(vsftpd側)
- 本命:FileZilla 側の設定(ここが決定打)
- それでも直らない場合(かなりレア)
- 念押し(vsftpdの完全UTF-8構成例)
- なぜロケールが正常でも化ける?
- もし今後も日本語ファイル名を使うなら
- SFTPって何?
- 全体の流れ
- ① サーバー側:SSH確認
- ② SSHを自動起動に
- ③ ファイアウォール設定
- ④ FileZilla(クライアント側設定)
- ⑤ 動作確認(CLI)
- ⑥(任意)超おすすめ:公開鍵認証(パスワード不要)
- ⑦(任意)パスワードログイン無効化(強化)
- ⑧ FTPはもう不要なら
- まとめ(正直な比較)
- まず大事な前提(超重要)
- 構成イメージ
- ① SFTP専用グループ作成
- ② SFTP用ユーザー作成(既存ユーザーでもOK)
- ③ chrootディレクトリ作成
- ④ SSH(SFTP)設定
- ⑤ SSH再起動
- ⑥ 動作確認
- ⑦ FileZilla設定
- よくある失敗(超重要)
- 応用パターン
- まとめ(これだけ覚えればOK)
全体の流れ
- vsftpd をインストール
- 基本設定(ローカルユーザーでログイン)
- 書き込み許可・セキュリティ設定
- サービス起動&自動起動
- ファイアウォール設定
- 動作確認(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 で👇
- 編集
- 設定
- 言語
- ☑ 「サーバーからのファイル名を 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=
もし C や POSIX になっていたら👇
sudo update-locale LANG=ja_JP.UTF-8
再ログイン後に反映されます。
それでも直らない場合(最終手段)
FileZillaの サイトマネージャー個別設定 を使います。
- ファイル → サイトマネージャー
- 対象サーバー選択
- 文字コード
- 「強制 UTF-8」を選択
- 接続し直す
なぜ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 側の設定(ここが決定打)
方法①(サイトごとに設定・おすすめ)
- ファイル → サイトマネージャー
- 該当サーバーを選択
- 上のタブ 「文字コード」
- ☑ 「強制 UTF-8」
- OK
- 一度切断 → 再接続
👉 これで 100%直るケースがほとんど です。
方法②(全体設定)
- 編集 → 設定
- 言語
- ☑ サーバーからのファイル名を UTF-8 として扱う
- 再接続
※ 方法①の方が確実です。
それでも直らない場合(かなりレア)
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 なら ほぼ設定済み です。
全体の流れ
- サーバー側:SSHが入っているか確認
- サーバー側:SSHを有効化
- ファイアウォール設定
- FileZillaでSFTP接続
- (任意)セキュリティ強化
① サーバー側: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(クライアント側設定)
サイトマネージャー設定
- ファイル → サイトマネージャー
- 新しいサイト作成
- 設定👇
| 項目 | 値 |
|---|---|
| プロトコル | SFTP – SSH File Transfer Protocol |
| ホスト | サーバーのIP |
| ポート | 22 |
| ログオンタイプ | 通常 |
| ユーザー | Linuxユーザー名 |
| パスワード | Linuxパスワード |
- 接続
👉 これで /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
まとめ(正直な比較)
| 項目 | FTP | SFTP |
|---|---|---|
| 文字化け | 起きやすい | 起きない |
| 暗号化 | なし | あり |
| 設定 | やや面倒 | 超簡単 |
| おすすめ度 | ⭐ | ⭐⭐⭐⭐⭐ |
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が安全で管理しやすい