ftpはファイルの送受信に特化したプロトコルです。暗号化されていない問題からセキュリティリスクがあるとして推奨されないですが、現在も特定の用途には利用されています。
本記事ではFTPの基本について使い方からサーバー構築まで解説します。
FTPとは?
FTP (File Transfer Protocol)は「ファイル転送プロトコル」つまりファイルを送受信するためのプロトコルです。TCP/IPの分類ではHTTPと同じアプリケーション層です。
古くから存在するプロトコルです。ポートは20, 21番を使用します。
通信は暗号化せずに平文で送受信するため盗聴の危険がよく指摘されます。そのため暗号化を施したものが登場しています。SSL/TLSを利用したFTPS、SSHを利用したSFTPはセキュアなFTPとして使われています。
暗号化しないFTPは通信速度が速いことが多く、大容量のファイル転送には依然として使われています。
FTPアプリケーション
ftpアプリケーションはたくさんあります。代表的なftpアプリケーションを挙げます。
ProFTPD
proFTPDは機能の豊富さが特徴のFTPサーバーアプリケーションです。UNIX系OSおよびMacOSで提供されています。TCPwrappersや.ftpaccessファイルを用いてアクセス制御を細かく設定できます。欠点はメモリを多く使用する点です。
PureFTPD
PureFTPDは軽い動作が特徴。セキュリティに関する設定も豊富であり、安全性が高い。
vsftpd
very secure ftpd。速度が速く大規模なネットワークで有用です。
どのFTPアプリケーションを使っても問題ないと思います。
FTPクライアントの使い方
1.まずはFTPクライアントをインストールしましょう
# yum -y install ftp
これでftpコマンドが使えるようになりました。
2.ftpコマンドで操作
ftpクライアントを入手したらシェル上で「ftp」と入力しましょう。ftpコマンドモードに入れるはずです。
ftpコマンドモードではftpコマンドという専用のコマンドが使えます。
ftp操作系コマンド
- open FTPサーバーへの接続 例:open ftp.xxx.xx
- close FTPサーバーから切断 例:colse
- quit FTPコマンドモードの終了 例:quit
ファイル操作系コマンド
- pwd 現在のディレクトリを確認
- ls ディレクトリ、ファイル情報の確認
- cd ディレクトリの移動
- get ファイルのダウンロード 例:get example.txt
- mget 複数ファイルダウンロード 例:mget *.*
- pomptで対話モード終了にすると確認されない
- mget 複数ファイルダウンロード 例:mget *.*
- put ファイルのアップロード 例:put example.txt
実際にftpサーバーからファイルをダウンロードする
ftp.riken.jpからファイルをダウンロードしてみましょう。
- ftpコマンドでコマンドモードに入る
- open ftp.riken.jpでサーバーに接続
- 名前を聞かれるので「anonymous」で入る
- password: にパスワードとしてメールアドレスを入力する
- *pwdコマンドでカレントディレクトリを確認
- lsコマンドでディレクトリを確認
- cdコマンドでgcc-10.1.0.tar.gzがあるディレクトリまで移動
- getコマンドでgcc-10.1.0.tar.gzをダウンロード
- closeでサーバーから切断
- quitでコマンドモード終了
FTPサーバーの構築
1.FTPサーバーをインストール
ここではvsftpdをインストールします。
# yum -y install vsftpd
2.ftpサーバーの設定
vstfpdの設定はvsftpd.confファイルで行います。
vsftpd.confは「/etc/vsftpd/vsftpd.conf」にあります。
設定項目
- anonymous_enable=no anonymousを無効化
- write_enable=no ファイル変更操作を無効
- chroot_local_user=yes 初期ディレクトリから上層には移動できない
- local_root=/home/ftpuser ftp初期ディレクトリ
- userlist_enable=yes
userlist_file=/etc/vsftpd/user_list 許可ユーザーをuser_listで指定する。
3.ftpサーバーの起動
# systemctl start vsftpd