- 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つのコマンドは、ファイルの保存と取得のニーズに十分に応えるでしょう。
コメントする