Linuxコマンド辞典 ftpコマンド(ネットワーク)
ファイルをFTPで転送する「ftp」コマンドの概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
概要・使用方法
書式
$ ftp [オプション][FTPサーバ名[ポート]]
FTPサーバに接続して、ファイルをダウンロード/アップロードできます。接続するFTPサーバを引数に指定した場合は、特定のFTPサーバに接続できます。FTPサーバへのログインにはユーザ名とパスワードが必要ですが、誰でもログインできる特定FTP(Anonymous FTP)が有効になっているサーバであれば、ユーザ名に「anonymous」、パスワードにメールアドレスを入力すればログインできます。
FTPサーバのアカウントを持っている場合は、そのユーザ名とパスワードを入力します。FTPはログイン情報が暗号化されない平文でやりとりされるため、途中の経路で盗聴される可能性もあります。どうしてもファイル転送を安全に行う必要がある場合は、sftpなどを利用します。
また=/.netrcを用意し、FTPサーバ名とユーザ名、パスワードを用意すれば自動ログインができます。FTPサーバを引数に指定しない場合は、プロンプト「ftp>」のインタプリタが起動します。ここで「?」または「help」を入力すると、利用可能なコマンドの一覧が表示されます。一覧を終了する場合は「quit」を入力します。
クライアントからFTPサーバに接続すると、次にFTPサーバからクライアントに対してデータ通信接続を行います。しかし、ファイヤーウォールの内側にあるクライアントとFTP接続する場合はそれができません。FTPサーバへ接続後に、データ通信接続をクライアントから行うことで対応できます。これをPASVモードと呼びます。
ftpコマンドはインストールされていない可能性があるので、その場合は「yum install ftp」or 「sudo yum install ftp」マンドでインストールします。
匿名FTPサーバのパスワードにメールアドレスを使う習慣は、特定のファイルにエラーがあることをFTPサーバ管理者が発見した場合、ダウンロードしたユーザにメールで通知したためという歴史的な経緯があります。
LinuxサーバにFTPサーバを構築する場合は以下を参照
オプション
-p | データ転送にPASVモードを利用する |
-i | 複数ファイルを転送中はプロンプトを出さない |
-n | 自動ログインをしない。自動ログインが有効な場合、.netrcを参考にしてログインする |
FTPサーバに接続する
$ ftp ホスト名
実行結果
今回は、FTPサーバのIPアドレスは、192.168.0.60としています。ホスト名はIPアドレス、ホスト、ドメイン、FQDNの指定が可能です。
[rin@centos ~]$ ftp 192.168.0.60 #←192.168.0.60サーバーに接続
Connected to 192.168.0.60 (192.168.0.60).
220 (vsFTPd 3.0.3)
Name (192.168.0.60:rin): roi #←接続ユーザーを指定
331 Please specify the password.
Password: #←パスワードを入力
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> #ログインできた場合はコマンドプロンプトが表示される
利用できるFTPコマンド一覧を表示
ftp> help
実行結果
ftp> help
Commands may be abbreviated. Commands are:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
ftp>
FTPサイトのディレクトリを移動してファイルを取得する
ftp> cd ディレクトリ
実行結果
ftp> ls
227 Entering Passive Mode (192,168,0,60,152,35).
150 Here comes the directory listing.
drwxr-xr-x 2 1003 1003 24 Jan 23 06:38 test
-rw-r--r-- 1 1003 1003 5 Jan 23 06:28 uptest.txt
-rw-r--r-- 1 1003 1003 254 Jan 23 07:20 メモ.txt
226 Directory send OK.
ftp> cd test #testディレクトリに移動する
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,0,60,43,139).
150 Here comes the directory listing.
-rw-r--r-- 1 1003 1003 5 Jan 23 06:38 uptext.txt
226 Directory send OK.
ftp>
FTPを抜ける方法
ftp> quit
.netrcを用意して自動ログインをする
ホームディレクトリに.netrcを用意してユーザ名とパスワードを記載しておけば、FTPサーバへのログインを自動で行うことができます。
以下は.netrcの記述例です。1行目の「machine」行には特定のFTPサーバを指定します。2行目の「default」行には「login」の後にユーザ名、「password」の後にパスワードを指定すると、その上ですべてのFTPサーバに対して自動でログインを試みます。「default」行はすべての「machine」行の下に記述します。
サンプル
[rin@centos ~]$ cat .netrc
machine 192.168.0.60 login roi password p@ssw0rd
default login anonymous password roi@example.jp
[rin@centos ~]$
Error - .netrc file not correct permissions.
上記のエラーメッセージが表示された場合は、.netrcが誰でも読み取りできてしまうのでパーミッション的に問題があるという警告です。その場合は、chmod 600 .netrcコマンドで所有者のみ閲覧と書き込みができるようにします。
[rin@centos ~]$ chmod 600 .netrc
[rin@centos ~]$ ls -la|grep .netrc
-rw------- 1 rin rin 97 1月 24 11:21 .netrc
[rin@centos ~]$
[rin@centos ~]$ ftp 192.168.0.60
Connected to 192.168.0.60 (192.168.0.60).
220 (vsFTPd 3.0.3)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>