LinuxでFTPコマンドを使用する方法

  • FTPは安全対策が不十分な古いプロトコルなので、インターネット上で使用するのは安全ではありません。信頼できるローカルネットワーク内でのファイル転送にのみ使用してください。
  • FTPを使用する場合、ログイン資格情報と転送されるデータがクリアテキストで送信されることに注意してください。
  • インターネット上で安全にファイル転送するには、SSHファイル転送プロトコルを利用し、機密情報を保護するために暗号化を提供するsftpコマンドラインプログラムを使用してください。

ファイル転送プロトコルは、読者のほとんどよりも古くからありますが、今でも健在です。FTPには最新のプロトコルのセキュリティはありませんが、それでも使用しなければならない場合があります。以下はその方法です。

警告:インターネット上でFTPを使用しないでください

まず最初に明確にしておきましょう。ファイル転送プロトコル(FTP)は1970年代初頭にさかのぼり、セキュリティを考慮せずに作成されました。何に対しても暗号化を使用しません。ユーザー名やパスワードなどのログイン資格情報や、ダウンロードまたはアップロードするデータは、クリアテキストで転送されます。途中にある誰でもあなたの秘密を見ることができます。しかし、FTPにはまだ用途があります。

ネットワーク内でファイルを転送する場合、ネットワーク上の誰もパケットをスニッフィングしたり、転送中に機密文書を盗聴したりしない限り、安全です。ファイルが機密情報や秘密情報でない場合は、FTPを使用して社内ネットワークで移動しても問題ありません。Linuxには、まさにそのシナリオに対処するための標準のftpコマンドラインプログラムがあります。

しかし、ftpコマンドを使用してインターネットを介して外部リソースにアクセスすることは絶対にしないでください。それには、セキュアなSSHファイル転送プロトコルを使用するsftpコマンドラインプログラムを使用してください。このチュートリアルでは、これらのプログラムの両方を紹介します。

インターネット上でFTPを絶対に使用したくない理由を明確にするために、以下のスクリーンショットをご覧ください。平文でFTPパスワードが表示されています。ネットワーク上またはインターネット上のFTPサーバーとの間にある人は誰でも、パスワードが「MySecretPassword」であることを簡単に確認できます。

暗号化されていないため、悪意のある行為者は、転送中のダウンロードまたはアップロードしているファイルを改ざんすることもできます。

ftpコマンドを使用する方法

FTPサイトで有効なアカウントを持っていると仮定すると、次のコマンドで接続できます。この記事全体で、コマンド内のIPアドレスを接続先のFTPサーバーのIPアドレスに置き換えてください。

ftp 192.168.4.25

ftpコマンドは、信頼できるローカルネットワーク上のサーバーに接続する場合にのみ使用してください。インターネット上でファイルを転送するには、以下で説明するsftpコマンドを使用してください。

FTPサーバーはウェルカムメッセージで応答します。挨拶の文言はサーバーによって異なります。次に、ログインするアカウントのユーザー名を求められます。

接続先のサイトのIPアドレスが表示され、その後にLinuxのユーザー名が続くことに注意してください。FTPサーバーでのアカウント名がLinuxのユーザー名と同じ場合は、Enterキーを押すだけです。これにより、FTPサーバーでのアカウント名としてLinuxのユーザー名が使用されます。Linuxのユーザー名とFTPアカウント名が異なる場合は、FTPアカウントのユーザー名を入力してからEnterキーを押します。

FTPサーバーにログインする

FTPサイトのパスワードを入力するように求められます。パスワードを入力してEnterキーを押します。パスワードは画面に表示されません。FTPユーザーアカウント名とパスワードの組み合わせがFTPサーバーによって検証されると、FTPサーバーにログインします。

ftp>プロンプトが表示されます。

ファイルの確認と取得

まず、FTPサーバー上のファイルの一覧を取得したいと思うでしょう。lsコマンドはまさにそれを行います。このユーザーは、ファイルgc.cがFTPサーバーにあることを確認し、自分のコンピューターにダウンロードしたいと考えています。そのコンピューターは、FTP用語で「ローカルコンピューター」です。

ファイルを取得(または「取得」)するコマンドはgetです。したがって、このユーザーはget gc.cというコマンドを発行します。getとスペースを入力し、次に取得するファイルの名前を入力します。

FTPサーバーは、ファイルをローカルコンピューターに転送し、転送が行われたことを確認して応答します。ファイルのサイズと転送にかかった時間も表示されます。

ls

get gc.c

複数のファイルを一度に取得するには、mget(複数取得)コマンドを使用します。mgetコマンドは、各ファイルを順番にダウンロードするかどうかを確認するように求めます。はいの場合は「y」、いいえの場合は「n」を押して応答します。

これは、膨大な数のファイルでは面倒になります。このため、関連するファイルのコレクションは通常、単一のtar.gzまたはtar.bz2ファイルとしてftpサイトに保存されます。

mget *.c

FTPサーバーへのファイルのアップロード

FTPアカウントに付与されている権限によっては、サーバーにファイルをアップロード(または「置く」)できる場合があります。ファイルをアップロードするには、putコマンドを使用します。この例では、ユーザーはSongs.tar.gzというファイルをFTPサーバーにアップロードしています。

put Songs.tar.gz

おそらく予想されるように、一度に複数のファイルをFTPサーバーに置くためのコマンドがあります。それはmput(複数put)と呼ばれます。mgetコマンドと同様に、mputは各ファイルのアップロードについて「y」または「n」の確認を求めます。

ファイルを置く場合と取得する場合の両方で、ファイルのセットをtarアーカイブに入れるという同じ議論が適用されます。このユーザーは、次のコマンドで複数の「.odt」ファイルをアップロードしています。

mput *.odt

FTPを使用したディレクトリの作成と変更

ftpサーバーでのユーザーアカウントで許可されている場合、ディレクトリを作成できる場合があります。これを行うためのコマンドはmkdirです。明確にするために、mkdirコマンドで作成するディレクトリは、ローカルコンピューターではなく、ftpサーバーに作成されます。

ftpサーバーでディレクトリを変更するには、cdコマンドを使用します。cdコマンドを使用すると、ftp>プロンプトは新しいカレントディレクトリを反映するように変更されません。pwd(作業ディレクトリの印刷)コマンドは、現在のディレクトリを表示します。

このftpユーザーは、musicというディレクトリを作成し、その新しいディレクトリに変更し、pwdコマンドを使用して自分のいる場所を確認してから、そのディレクトリにファイルをアップロードします。

mkdir music

cd music

pwd

put songs.tar.gz

現在のディレクトリの親ディレクトリにすばやく移動するには、cdupコマンドを使用します。

cdup

FTPでのローカルコンピューターへのアクセス

ローカルコンピューターのディレクトリを変更するには、ftp>プロンプトでlcdコマンドを使用します。ただし、ローカルファイルシステムのどこにいるのかわからなくなることがあります。ローカルファイルシステムにアクセスするより便利な方法は、!コマンドを使用することです。

!コマンドは、ローカルコンピューターへのシェルウィンドウを開きます。このシェルでは、標準のターミナルウィンドウでできることは何でも実行できます。exitと入力すると、ftp>プロンプトに戻ります。

このユーザーは、!コマンドを使用して、ローカルコンピューターでシェルウィンドウを開きました。彼らは、そのディレクトリにあるファイルを確認するためにlsコマンドを発行し、次にexitと入力してftp>プロンプトに戻りました。

!

ls

exit

FTPでのファイルの名前変更

FTPサーバー上のファイルの名前を変更するには、renameコマンドを使用します。ここでは、FTPユーザーがrenameでファイルの名前を変更し、次にlsコマンドを使用してディレクトリ内のファイルの一覧を表示します。

rename songs.tar.gz rock_songs.tar.gz

ls

FTPを使用したファイルの削除

FTPサーバー上のファイルを削除するには、deleteコマンドを使用します。複数のファイルを一度に削除するには、mdeleteコマンドを使用します。各ファイルの削除について「y」または「n」の確認を求められます。

ここでは、FTPユーザーがファイルの名前を確認するためにファイルを一覧表示し、次に削除するファイルを選択しました。次に、それらをすべて削除することにしました。

ls

delete gc.o

mdelete *.o

sftpコマンドの使用

IPアドレスシステムに精通している読者は、上記の例で使用されているFTPサーバーの192.168アドレスが内部IPアドレス、別名プライベートIPアドレスであることに気付いたでしょう。この記事の冒頭で警告したように、ftpコマンドは内部ネットワークでのみ使用する必要があります。

リモートまたはパブリックFTPサーバーに接続する場合は、sftpコマンドを使用します。このユーザーは、test.trebex.netにある公開アクセス可能なFTPサーバーでdemoという名前のSFTPアカウントに接続します。

接続すると、接続が確立されたことが通知されます。また、ホストの信頼性を確認できないという通知も表示されます。これは、新しいホストへの最初の接続では通常のことです。彼らは「y」を押して接続を受け入れます。

ユーザーアカウント名(demo)がコマンドラインで渡されたため、ユーザーアカウント名の入力を求められません。パスワードのみを求められます。これは入力、検証、受け入れられ、sftp>プロンプトが表示されます。

sftp [email protected]

上で説明したFTPコマンドは、次の例外を除いて、SFTPセッションでもまったく同じように機能します。

  • ファイルを削除するにはrmを使用します(FTPはdeleteを使用します)
  • 複数のファイルを削除するにはrmを使用します(FTPはmdeleteを使用します)
  • 親ディレクトリに移動するにはcd ..を使用します(FTPはcdupを使用します)

このユーザーは、SFTPセッションでいくつかのコマンドを使用しました。彼らはlsを使用してファイルを一覧表示し、cdを使用してpubディレクトリに変更しました。彼らはpwdを使用して作業ディレクトリを印刷しました。

Linuxの世界では、特にscp(セキュアコピー)など、ファイルを転送する他のオプションがありますが、ここではFTPとSFTPに焦点を当てています。適用可能なシナリオで使用されるこれらの2つのコマンドは、ファイルの保存と取得のニーズに十分に応えるでしょう。