ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
FTP とは
FTP (File Transfer Protocol) は、ホスト間でファイルを送受信するためのアプリケーション層プロトコルです。1985 年に RFC 959 で標準化された TCP/IP の古典的プロトコルで、現在も Web サイトのアップロードや組み込み機器のファーム更新等で使われています。
制御チャネルとデータチャネル
FTP の最大の特徴は2 本の TCP コネクションを使うこと:
| チャネル | ポート | 用途 |
|---|---|---|
| 制御チャネル (Control) | サーバ 21 | コマンド送受信(ログイン、cd、ls 等) |
| データチャネル (Data) | Active: サーバ 20 Passive: ランダム高ポート | ファイル本体・ディレクトリリスト転送 |
Active モード(PORT モード)
従来の標準モード。サーバからクライアントへデータチャネルを張る:
クライアント サーバ
| |
| --- 21 番に接続 (制御) --------> |
| <-- 220 Welcome ---------------- |
| --- USER alice ---------------> |
| --- PASS xxx -----------------> |
| --- PORT 192,168,1,10,200,15 -> |
| (= 自分のIPと開放ポート通知)
| --- LIST ---------------------> |
| <== 20 番から自分の指定ポートへ接続 ==== | ← サーバ発信!
| <-- ファイルリスト送信 -------- |
クライアント側で NAT / Firewall がある場合、サーバからクライアントへの接続がブロックされて失敗します。これが Passive モードが生まれた理由。
Passive モード(PASV モード)
現代のデフォルト。クライアントからサーバへデータチャネルを張る:
クライアント サーバ
| |
| --- 21 番に接続 (制御) --------> |
| <-- 220 Welcome ---------------- |
| --- USER alice ---------------> |
| --- PASS xxx -----------------> |
| --- PASV -------------------> |
| <-- 227 Entering Passive Mode |
| (192,168,1,1,48,123) |
| ↑ サーバが使うIPと開放ポート
| --- 指定された高ポートに接続 ==> | ← クライアント発信!
| <-- ファイルリスト送信 -------- |
NAT 越えで自然に動くため、現代の FTP クライアントは PASV をデフォルトにしています。
FTP コマンド(プロトコルレベル)
| コマンド | 意味 | 例 |
|---|---|---|
USER | ユーザ名 | USER alice |
PASS | パスワード | PASS secret |
PWD | 現在のディレクトリ | PWD |
CWD | ディレクトリ移動 | CWD /var/www |
LIST / NLST | 一覧 | LIST |
RETR | ダウンロード | RETR index.html |
STOR | アップロード | STOR upload.zip |
DELE | 削除 | DELE old.log |
MKD / RMD | ディレクトリ作成 / 削除 | MKD newdir |
TYPE | 転送タイプ | TYPE I(バイナリ)TYPE A(ASCII) |
PASV / PORT | データチャネル方式 | PASV |
QUIT | 切断 | QUIT |
FTP の応答コード
HTTP に似た 3 桁の応答コードを返します:
| コード | 意味 | 例 |
|---|---|---|
| 1xx | 処理開始(継続応答) | 150 ファイル転送開始 |
| 2xx | 成功 | 220 サーバ準備完了、226 転送完了 |
| 3xx | 追加情報待ち | 331 ユーザ OK パスワード要求 |
| 4xx | 一時的エラー(再試行可) | 421 サーバ閉鎖中 |
| 5xx | 恒久的エラー | 530 ログイン失敗、550 ファイル無し |
コマンドライン FTP の使い方
# 接続
ftp example.com
# Connected to example.com.
# 220 (vsFTPd 3.0.5)
# Name (example.com:alice): alice
# 331 Please specify the password.
# Password:
# 230 Login successful.
# 基本コマンド
ftp> pwd # 現在のディレクトリ
ftp> ls # 一覧
ftp> cd /var/www # 移動
ftp> binary # バイナリモード(画像/動画転送時必須)
ftp> passive # Passive モード明示
ftp> get index.html # ダウンロード
ftp> put upload.zip # アップロード
ftp> mget *.jpg # 複数ダウンロード
ftp> mput *.log # 複数アップロード
ftp> delete old.log # 削除
ftp> mkdir backup # ディレクトリ作成
ftp> bye # 切断
FTP は平文通信 - セキュリティ問題
FTP 最大の問題はすべてが平文であること:
- ユーザ名・パスワードが通信路で丸見え
- 転送ファイル自体も平文
- 中間者攻撃(MITM)でパスワード盗難・ファイル改ざんが容易
- 公衆 Wi-Fi での FTP 利用は完全に危険
本番運用では FTP の使用を即刻やめて、SFTP または FTPS への移行を強く推奨します。
FTPS と SFTP の違い
| 項目 | FTPS | SFTP |
|---|---|---|
| プロトコル | FTP over TLS/SSL | SSH の File Transfer Subsystem |
| RFC | RFC 4217 | RFC(Internet Draft)+ OpenSSH 拡張 |
| ポート | 暗黙: 990 明示: 21(STARTTLS で昇格) | 22(SSH と同じ) |
| 認証 | パスワード / 証明書 | パスワード / SSH 鍵 |
| チャネル数 | 2 本(制御 + データ) | 1 本(SSH 多重化) |
| NAT/Firewall 越え | 難しい(データポート問題が残る) | ★ 容易 |
| 推奨度 | 互換性が必要なら | ★ 推奨 |
SFTP の使い方(推奨)
# SSH 鍵で接続
sftp -i ~/.ssh/id_rsa alice@example.com
# パスワードで接続
sftp alice@example.com
# 基本コマンド(FTP とほぼ同じ)
sftp> pwd
sftp> ls
sftp> cd /var/www
sftp> get index.html
sftp> put upload.zip
sftp> bye
# 1 コマンドでファイル転送
scp upload.zip alice@example.com:/var/www/
scp alice@example.com:/var/www/index.html .
# 同期は rsync over SSH
rsync -avz ./localdir/ alice@example.com:/var/www/htdocs/
vsftpd / ProFTPD の設定例
# /etc/vsftpd/vsftpd.conf
listen=YES
anonymous_enable=NO # 匿名ログイン無効
local_enable=YES # ローカルユーザ許可
write_enable=YES # 書込み許可
chroot_local_user=YES # ホームディレクトリに閉じ込め
pasv_min_port=30000 # Passive モードポート範囲
pasv_max_port=30100
ssl_enable=YES # FTPS 有効化
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| 接続できるがファイル一覧が出ない | Active モードで NAT/FW | Passive モードに切替 |
| Passive でも一覧が出ない | Passive ポート範囲未開放 | サーバの pasv_min_port〜max_port を FW で開放 |
| テキストファイルが壊れる | ASCII モードで転送 | binary モードに切替 |
| 大きなファイルが途中で切れる | 制御チャネルがタイムアウト | keep-alive 設定 |
| 500 OOPS | vsftpd のセキュリティチェック | chroot 設定確認 / allow_writeable_chroot=YES |
FAQ
Q: FTP と HTTP のファイルダウンロード、どちらが速い?
A: HTTP の方が現実的に速い。FTP は接続オーバーヘッドが大きく、CDN 等にも向きません。配布用には HTTP(S) を使うべき。
Q: 古いシステムが FTP しか対応していない
A: FTPS(TLS 付き)への移行が比較的容易。サーバ側で TLS を有効化、クライアントは「明示的 FTPS」を選択。最終手段として VPN 越し FTP も有効。
Q: FTP 21 番ポートを Web サーバと共存させたい
A: 別ポート(例: 2121)で待ち受け可能。vsftpd なら listen_port=2121。クライアントは ftp -p 2121 ...。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
- SSH
- FTP
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?