ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
FTP の概要
FTP (File Transfer Protocol) は 1971 年に策定された RFC 959 ベースのファイル転送プロトコルです。Web 黎明期のサイト公開・ソフトウェア配布の標準でしたが、平文通信ゆえのセキュリティ問題から、現代では SFTP / FTPS / HTTPS API への置き換えが進んでいます。
ポートとコネクション
| プロトコル | 制御 | データ | 暗号化 | 下位プロトコル |
|---|---|---|---|---|
| FTP (Plain) | 21/TCP | 20/TCP (Active) or 動的 (Passive) | なし | — |
| FTPS Explicit | 21/TCP (AUTH TLS で TLS 化) | 動的 | TLS | SSL/TLS |
| FTPS Implicit | 990/TCP (最初から TLS) | 989/TCP | TLS | SSL/TLS |
| SFTP | 22/TCP (SSH と同じ) | 22/TCP (同じ接続内) | SSH | SSH |
SFTP は名前は FTP と似ていますが、まったく別物です。SSH のサブプロトコル (SFTP subsystem) で、SSH のセキュリティ・認証をそのまま継承します。
アクティブモード vs パッシブモード
FTP の特殊性は制御接続とデータ接続が分離していること。データ接続の張り方で 2 モードあります:
| モード | 動作 | NAT/FW 越え |
|---|---|---|
| Active | クライアントが受け側ポートを通知 (PORT) → サーバが 20 番から接続しに行く | クライアント側 FW で塞がれ失敗しやすい |
| Passive (PASV) | サーバが待ち受けポートを通知 (PASV) → クライアントが接続しに行く | ★ 現代では PASV が既定 |
# Active モード (古典)
client(*) --- PORT cmd --- server:21
server:20 ----connect---> client:n
# クライアント側 NAT/FW で 20->n 接続が落ちる
# Passive モード (PASV)
client --- PASV cmd ---> server:21
server: "227 Entering Passive Mode (192,0,2,1,28,123)"
client --- connect ---> server:7291 (= 28*256+123)
# サーバ側のポート開放のみで OK
主要コマンド (FTP プロトコル)
| コマンド | 役割 |
|---|---|
USER / PASS | ログイン (平文) |
PWD / CWD | カレント表示 / 移動 |
LIST / NLST | ファイル一覧 |
RETR / STOR | ダウンロード / アップロード |
DELE / RNFR / RNTO | 削除 / リネーム |
MKD / RMD | ディレクトリ作成 / 削除 |
TYPE A / TYPE I | ASCII / Binary 切替 |
PASV / EPSV | パッシブモード要求 |
QUIT | 切断 |
ASCII モード vs Binary モード
古い設計の名残で、テキストファイル転送時に改行コードを変換するモード (ASCII) と、無変換 (Binary / Image) があります:
# ASCII モード: CR/LF を相手 OS の改行に変換
# Windows -> Unix: CRLF -> LF
# Unix -> Windows: LF -> CRLF
# 利点: テキストファイルの可読性
# 欠点: バイナリを通すと壊れる
# Binary (Image) モード: 無変換
# 現代は基本これ
バイナリファイルを ASCII モードで転送すると確実に壊れます。zip/画像/実行ファイルは必ず Binary に。
ftp コマンドの基本
# 接続
ftp ftp.example.com
# Name: alice
# Password: ********
ftp> ls
ftp> cd /pub
ftp> bin # Binary モード
ftp> passive # パッシブモード切替
ftp> get file.zip # ダウンロード
ftp> put upload.txt # アップロード
ftp> mget *.txt # 複数取得
ftp> bye # 切断
# 非対話的: curl が便利
curl -u user:pass ftp://ftp.example.com/file.zip -o file.zip
curl -u user:pass -T upload.txt ftp://ftp.example.com/
FTPS (FTP over TLS)
従来の FTP に TLS 暗号化を追加した方式。Explicit と Implicit があります:
# Explicit FTPS (推奨): 21 番で接続 -> AUTH TLS コマンドで TLS 化
curl --ftp-ssl -u user:pass ftp://ftp.example.com/file.zip -o file.zip
# Implicit FTPS: 最初から TLS (990 番)
curl --ftp-ssl -u user:pass ftps://ftp.example.com:990/file.zip -o file.zip
# lftp なら自動判別
lftp -e "set ftp:ssl-force true; set ftp:ssl-protect-data true" -u user,pass ftp.example.com
SFTP (SSH File Transfer Protocol)
名前は FTP に似ていますが、FTP と何の関係もなく、SSH のサブプロトコルです。SSH サーバが動いていれば追加設定なしで使えるのが利点。
# 対話的
sftp alice@server.example.com
sftp> put localfile
sftp> get remotefile
sftp> ls
sftp> exit
# 非対話的
scp file.zip alice@server:/upload/ # SCP は SSH 上のファイル転送、SFTP と兄弟
rsync -av ./ alice@server:/path/ # 差分転送に強い
# 鍵認証 (パスワード不要に)
ssh-keygen -t ed25519
ssh-copy-id alice@server
sftp alice@server # パスワード問われない
主なクライアントソフト
| 名称 | OS | 対応 | 特徴 |
|---|---|---|---|
| FileZilla | Win/Mac/Linux | FTP/FTPS/SFTP | 定番 OSS、GUI |
| WinSCP | Windows | FTP/FTPS/SFTP/SCP | エクスプローラ風、PuTTY 連携 |
| Cyberduck | Mac/Win | FTP/FTPS/SFTP + S3 等 | クラウド統合に強い |
| lftp | Unix | FTP/FTPS/SFTP/HTTP(S) | CLI、ミラー機能・自動化に◎ |
| Transmit | Mac | FTP/FTPS/SFTP + クラウド | 商用、高速 |
| curl | 全 OS | FTP/FTPS/SFTP/SCP | シェルスクリプト向き |
Anonymous FTP
ユーザ名 anonymous + パスワードに自分のメールアドレス (慣習) でログインする公開 FTP。Linux ディストリの ISO ミラーや、CRAN/CTAN 等の学術ミラーでまだ稼働しています。
ftp ftp.gnu.org
# Name: anonymous
# Password: your@email.com
ftp> ls /gnu
# 多くのミラーは HTTPS にも対応
curl -O https://ftp.gnu.org/gnu/coreutils/coreutils-9.5.tar.xz
セキュリティ上の問題
- 認証情報が平文: ユーザ名 / パスワードがネットワーク上に丸見え
- データも平文: 転送内容を傍受可能
- パッシブモードのデータポート範囲を広く開ける必要 → FW 攻撃面が広がる
- FXP (server-to-server 転送) を悪用した攻撃
これらの理由で 純粋 FTP はインターネット上で使うべきではないとされ、PCI DSS 等のセキュリティ標準でも禁止対象です。
現代の代替手段
| 用途 | 推奨 |
|---|---|
| サーバへのデプロイ | SFTP / SCP / rsync over SSH / Git |
| 大容量ファイル配布 | HTTPS / S3 / GCS / Azure Blob (署名付き URL) |
| クライアントとのファイル共有 | WebDAV / クラウドストレージ (Box / OneDrive) |
| レガシー連携 | FTPS (TLS 強制) |
| 大量小ファイルバックアップ | rsync / restic / borg |
FAQ
Q: FTP と SFTP のサーバを同居させたい
A: 不要なら入れない方が安全。どうしても必要なら vsftpd (FTP/FTPS) + OpenSSH (SFTP) を別アカウントで管理。
Q: パッシブモードで「227 Entering Passive Mode」後にハングする
A: サーバ側のパッシブポート範囲 (例: pasv_min_port / pasv_max_port) が FW で塞がれているのが定番。ファイアウォール開放が必要。
Q: クラウドの S3 を FTP のように扱いたい
A: s3fs / goofys でマウント、または AWS Transfer Family (マネージド SFTP) を利用。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 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アノテーションとは
最近更新/作成されたページ
- SEO タイトル設計とキーワード配置完全ガイド (CTR / LLMO 対応) 2026-06-10 18:13:56
- Vue.js v-bind 完全ガイド (属性 / クラス / スタイル / Composition API) 2026-06-10 18:13:56
- Twitter (X) プラットフォーム完全ガイド 2026 (API / Premium / 競合) 2026-06-10 18:13:56
- PHP 変数スコープ完全ガイド (global / static / use / Arrow Function) 2026-06-10 18:13:56
- jQuery .height() 完全ガイド (innerHeight / outerHeight / box-sizing) 2026-06-10 18:13:56
- WordPress 主要独自関数完全ガイド (Loop / Enqueue / Hook / Conditional Tag) 2026-06-10 18:13:56
- jQuery 要素・値の削除完全ガイド (remove / detach / empty / val) 2026-06-10 18:13:56
- PHP コメント完全ガイド (// / # / /* */ / PHPDoc) 2026-06-10 18:13:56
- PHP 改行出力 (\n / PHP_EOL / nl2br) 完全ガイド 2026-06-10 18:13:56
- JavaScript 確認ダイアログ完全ガイド (confirm / alert / prompt / dialog) 2026-06-10 18:13:56
- UE5 スクリーンショット保存 (Scene Capture) 完全ガイド 2026-06-10 18:12:53
- UE5 Nav Mesh Bounds Volume 完全ガイド 2026-06-10 18:12:53
- EJS テンプレートの共通化 (include) 完全ガイド 2026-06-10 18:12:53
- UE5 カメラ傾き角度制限完全ガイド (Pitch Min/Max) 2026-06-10 18:12:53
- SQLite 完全ガイド (組み込み RDBMS) 2026-06-10 18:12:53
コメントを削除してもよろしいでしょうか?