FTPと和解せよ（2023年バージョン）

# 老害の戯言
老害「大昔、Web開発はローカルマシンのWindowsとかに、[XAMPP](https://www.apachefriends.org/jp/index.html)などを入れて、Apache起動させて、Gitなんか無いから、Apache側のファイルを直接いじらずに、FTPでアップロードして確認したもんでね。」

若者「ApacheはNginxみたいなもの？FTPって何ですか？」

FTPはFile Transfer Protocolのことです。

# FTPって何ですか？

<font color="Red">FTPって何ですか？</font>と言われるのは、しょうがない部分もある。

 * 業務で使うことがない
 * 業務＆趣味でホームページを作ることがない
     * 2023年でも[ホームページ・ビルダー22](https://www.justsystems.com/jp/products/hpb/)があるぞ！
 * ソフトウェアのダウンロードでFTPサーバーを案内されることがなくなった
     * Adobe Acrobat Readerのダウンロードでよく見た
 * ブラウザーでFTPが使用できなくなった
     * [Google、Chrome 95.0.4638.54リリース - FTPサポートを完全に削除](https://news.mynavi.jp/techplus/article/20211020-2164520/)
 * macOSからFTPコマンドが削除された（macOS High Sierra 10.13から削除された）
     * [ターミナルで telnet や ftp の代わりに ssh と scp を使う](https://support.apple.com/ja-jp/HT208430)

このようにFTPは完全に過去のテクノロジーとして葬り去ろうとしております。だがFTPというのは知らなくて良いテクノロジーなのでしょうか？

## 閑話休題、2023年現在FTPのクライアントソフトはどうなっている？

2023年現在、WindowsではFFFTPが静かにバージョンアップしてて、老舗の風格を感じます。

https://forest.watch.impress.co.jp/docs/news/1498982.html


また、macOSではFTPコマンドがなくなっていますが、Finderの機能は生きています。
そのためChromeでFTPリンクをクリックすると、Finderが反応します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/94187743-1689-0ba6-e411-c17bd1542c76.png' width='50%'>

ユーザの種類は登録ユーザでパスワード入力になる。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/e60bf134-61a3-76a8-38cc-8dbfcb24a00e.png' width='50%'>

今回の例にあるAdobeの公開FTPサーバーは、AnonymousFTPなのでゲストを選択する。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/a0c63c3a-e9b8-8285-abe5-0622f814f58f.png' width='50%'>

接続を押下する。


<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/942e2928-bb9c-2d70-7f31-5f564235faa9.png' width='50%'>

Finderが開きます。

なお、ブラウザーのリンクが働かないときは、リンク先をコピーしておき、メニューからサーバーへ接続を選びます。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/322fbfa6-d566-bee2-82b3-e560afd8e2ca.png' width='30%'>

サーバーへ接続が出たら、コピーしたURLをペーストして接続します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/76b716c7-ca8f-1634-21da-3579e89a8d51.png' width='50%'>


# FTPと和解せよ準備編
ちなみに、AWSには「AWS Transfer Family」というのがあるので、実際に業務で使用するならば簡単に設定できます。

https://aws.amazon.com/jp/aws-transfer-family/

しかし、FTPと遊ぶだけで、いきなりAWSを使うのは！ということなので、とりあえず、ローカルマシンでFTPサービスを動かすことにします。
それならば有名どころのPure-ftpdを使うのが良いでしょう。
ただ、2023年において、Docker版やbrew版のPure-ftpdはApple SiliconのMacとは相性があまり良くないので、今回は初心に帰って[XAMPP](https://www.apachefriends.org/jp/index.html)を使ってみましょう。

なお、令和の時代にXAMPPをmacOSにインストールしようとすると、開発元を検証できないためという画面がでてしまいます。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/f9579297-8c61-032d-61e5-d33afbadbb04.png' width='30%'>

そのため設定の「プライバシーとセキュリティ」から「このまま開く」をすると起動します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/d2fa73ab-80c6-00e7-2535-a82a182c9685.png' width='50%'>

起動したら、確認がでるので「開く」を押下します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/80f83fef-27de-3c8c-5693-2339a917fc5a.png' width='50%'>

最後の確認が出るので、Macのパスワードを入れて「OK」を押下します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/496cbeda-9272-0178-1a02-3d756705096b.png' width='40%'>

やっとインストールが開始します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/4c4f6d97-3860-e00b-5e8e-278ee5d6be32.png' width='50%'>

「Next]を押下します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/404ce304-4aed-323d-709a-035386a3cfd0.png' width='50%'>

「Next]を押下します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/229267c0-645e-54ee-5495-a1a8f4580263.png' width='50%'>

「Next]を押下します。


<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/d39716d0-b5d5-5b42-4878-3bcb43d3149d.png' width='50%'>

待ちます。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/d06fae99-06ce-cbac-2376-8ceeab5b74d9.png' width='50%'>

「Finish]を押下します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/ba65514e-ca5b-83f3-5479-3ccd04d67f08.png' width='50%'>

XAMPPのランチャーが起動します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/d4c5feb2-13ce-d541-b8b9-29c99e44304f.png' width='50%'>

[Manage Service]を選びます。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/138dd49b-23e0-6ab7-2521-f5a5b44c8c4a.png' width='50%'>

ProFTPDを選択して[Start]を押下します。

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/f22913e7-6439-8732-f3cd-6b4a3fb61ee6.png' width='50%'>

これでFTPサービスが起動しました。

令和の時代にXAMPPとProFTPDをM2 Macで起動しました。


# FTPクライアントソフト

macOSにはFTPコマンドがなくなっています。macOSでFTPコマンドを使用したいときはbrewにlftpという代替コマンドがあるので、それをインストールします。ついでにtelnetもインストールします。

そして、さきほど起動したFTPサービスにつなげてみます。
ProFTPDではデフォルトのユーザー名は`daemon`でパスワードは`xampp`です。

```bash
lftp -u daemon localhost
```

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/afb62ef3-d9d1-3e7d-3c96-1879b5787b0b.png' width='50%'>

これで準備完了です。

# FTPと和解せよ実践編

やっと本題に入れます。

FTPと和解するには、FTPと会話するのが良いです。
FTPと会話するには、Telnetソフトを使用するのが良いです。

```bash
telnet localhost 21
USER daemon
PASS xampp
PWD
EPSV
```

こんな感じでFTPに対してコマンドをTelnetソフトを使って会話できます。
なお、自宅環境はIPv6なのでPASVコマンドは使えず、EPSVコマンドでパッシブモードに切り替えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/e525060e-c8e9-922e-22c9-a1da3ec161b6.png)

令和の時代にFTPと会話してみました。

# まとめ

1. FTP自体が、ほぼロストテクノロジーとなっていた
1. 令和の時代ではXAMPPの起動も一苦労する
1. パッシブモードへのコマンドはIPv6用がある