FTPは「ファイル転送プロトコル」の略で、リモートサーバーまたはローカルサーバーからファイルをダウンロードしたり、サーバーにファイルをアップロードしたりするための優れたプロトコルです。 FTPを使用することは、適切にセットアップされた後、かなり基本的なタスクであることがわかります。これは、クライアントからの接続(デフォルトではポート21)をリッスンするサーバーを持つことで機能します。クライアントは、自分のユーザーアカウントを使用してリモートディレクトリにアクセスし、付与されているアクセス許可に応じて、そこでファイルをダウンロードまたはアップロードできます。匿名認証を構成することもできます。つまり、ユーザーはFTPサーバーに接続するために自分のアカウントを必要としません。
Ubuntu Linuxでは、さまざまなFTPサーバーおよびクライアントソフトウェアパッケージを利用できます。デフォルトのGUIおよびコマンドラインツールをFTPクライアントとして使用することもできます。非常に人気があり、高度に構成可能なFTPサーバーパッケージはvsftpdであり、Ubuntuを含む多くのLinuxシステムで利用できます。
このガイドでは、Ubuntuにvsftpdをインストールするための手順を段階的に説明します。また、さまざまな設定でFTPサーバーを構成する方法、次にコマンドライン、GNOME GUI、またはFTPクライアントソフトウェアを使用してFTPサーバーに接続する方法についても説明します。
FTPで十分な場合もありますが、インターネット経由の接続にはSFTPをお勧めします。これは、資格情報とデータが暗号化なしで送信されるため、FTPをインターネット接続で使用するのは安全ではないためです。 SFTPの「S」は「Secure」の略で、SSHを介してFTPプロトコルをトンネリングし、安全な接続を確立するために必要な暗号化を提供します。 SFTPの詳細については、SFTPを使用してファイルを安全に転送する方法に関するガイドを参照してください。
このチュートリアルでは、次のことを学びます。
- Ubuntuにvsftpdをインストールして設定する方法
- FTPユーザーアカウントを設定する方法
- コマンドラインからFTPサーバーに接続する方法
- GUIを介してFTPサーバーに接続する方法
- 匿名FTPログインを構成する方法
- デフォルトのFTPリスニングポートを変更する方法
- 「接続が拒否されました」FTP接続エラーのトラブルシューティング
UbuntuLinuxでFTPサーバーに接続する
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
システム | Ubuntu Linux |
ソフトウェア | vsftpd |
その他 | rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 |
コンベンション | # –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
vsftpdのインストール
ターミナルに次のコマンドを入力して、Ubuntuシステムにvsftpdをインストールします。
$ sudo apt install vsftpd
vsftpdサーバーの構成
- 後で問題が発生した場合に備えて、元の構成ファイルのバックアップコピーを保持することを常にお勧めします。デフォルトの設定ファイルの名前を変更しましょう:
$ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_orig
- nanoまたは任意のテキストエディタを使用して、新しいvsftpd構成ファイルを作成します:
$ sudo nano /etc/vsftpd.conf
- 次の基本構成をファイルにコピーします。この構成は基本的なFTPサーバーには十分であり、これが正しく機能していることを確認したら、後で環境の特定のニーズに合わせて調整できます。
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO pasv_enable=Yes pasv_min_port=10000 pasv_max_port=10100 allow_writeable_chroot=YES
上記の行を新しく作成した
/etc/vsftpd.conf
に貼り付けます ファイルを作成し、変更を保存してファイルを閉じます。 vsftpd構成ファイル - Ubuntuの組み込みファイアウォールはデフォルトでFTPトラフィックをブロックしますが、次のコマンドはトラフィックを許可するためにUFWで例外を作成します:
$ sudo ufw allow from any to any port 20,21,10000:10100 proto tcp
- 構成ファイルを保存し、ファイアウォールルールを更新したら、vsftpdを再起動して、新しい変更を適用します。
$ sudo systemctl restart vsftpd
FTPユーザーを作成する
FTPサーバーは着信接続を受信する準備ができているので、FTPサービスへの接続に使用する新しいユーザーアカウントを作成します。
- この最初のコマンドを使用して、
ftpuser
という新しいアカウントを作成します 、およびアカウントのパスワードを設定する2番目のコマンド:$ sudo useradd -m ftpuser $ sudo passwd ftpuser New password: Retype new password: passwd: password updated successfully
- すべてが正しく機能していることを確認するには、ftpuserのホームディレクトリに少なくとも1つのファイルを保存する必要があります。このファイルは、次の手順でFTPにログインしたときに表示されるはずです。
$ sudo bash -c "echo FTP TESTING > /home/ftpuser/FTP-TEST"
コマンドライン経由でFTPサーバーに接続
これで、IPアドレスまたはホスト名のいずれかでFTPサーバーに接続できるようになります。まず、次のコマンドを実行して、デフォルトのFTPクライアントユーティリティがシステムにインストールされていることを確認します。ソフトウェアをインストールするか、システムにすでに存在していることを通知します。
$ sudo apt install ftp
コマンドラインから接続してすべてが機能していることを確認するには、ターミナルを開き、Ubuntuのftpコマンドを使用してループバックアドレス(127.0.0.1)に接続します。
$ ftp 127.0.0.1コマンドライン経由でFTPサーバーに接続する
上のスクリーンショットでわかるように、前に構成したユーザー名とパスワードを指定することでFTPサーバーにログインできました。次に、ls
を発行してみましょう コマンド。前の手順で作成したテストファイルが一覧表示されます。
ftp> lsFTPサーバーのコンテンツを表示できることを確認するためのテストファイルの一覧表示
出力は上のスクリーンショットのようになり、ログインが成功し、ls
であることを示します。 以前に作成したテストファイルを表示するコマンド。
GNOMEGUIを介してFTPサーバーに接続する
必要に応じて、GUIを使用してFTPサーバーに接続することもできます。 FTPクライアントには多くのオプションがありますが、UbuntuのデフォルトのGNOME GUIには、ファイルマネージャーからFTPサーバーに接続する機能がすでに備わっています。これを使用してFTPサーバーに接続する方法は次のとおりです。
- [アクティビティ]メニューまたはクイック起動バーからファイルマネージャを開きます。
- 「その他の場所」をクリックして、
ftp://127.0.0.1
と入力します。 ウィンドウの下部にある[サーバーに接続]ボックスで、[接続]をクリックします。 GNOMEファイルマネージャーを介したFTPサーバーへの接続 - 「登録ユーザー」を選択し、前に設定したFTPアカウントの資格情報を入力して、[接続]をクリックします。 FTPユーザーのクレデンシャルを入力する
- 接続が成功すると、前に作成したテストファイルが表示されます。これで、このファイルをダウンロードして表示したり、独自のコンテンツをディレクトリにアップロードしたりできるようになります。 FTPサーバーへの接続に成功し、テストファイルが表示されます
vsftpdで匿名アクセスを許可する
これまで、FTPサーバーにアクセスできる新しいユーザーを作成する方法を見てきました。ユーザー名とパスワードを指定せずに他のユーザーがFTPサーバーにアクセスできるようにする場合は、匿名認証を構成できます。以下の手順に従ってセットアップしてください。
- まず、
/etc/vsftpd.conf
を編集する必要があります ファイルなので、nanoまたはその他のテキストエディタで開きます。$ sudo nano /etc/vsftpd.conf
- 次に、
anonymous_enable=NO
を探します 行を入力し、設定をYES
に変更します 。anonymous_enable=YES
- 完了したら、新しい変更を保存しながらこのファイルを終了し、vsftpdサービスを再起動して変更を有効にします。
$ sudo systemctl restart vsftpd
- 匿名ログインをテストするには、
ftp 127.0.0.1
を発行します コマンド、anonymous
を使用 ユーザー名、および空白のパスワードとして。230 Login successful
を受け取るはずです 下のスクリーンショットに示すようなメッセージ。
匿名でFTPサーバーにログインする
デフォルトのFTPポート番号を変更する
デフォルトでは、FTPプロトコルはポート21でユーザー認証をリッスンし、ポート20でデータ転送をリッスンします。ただし、/etc/vsftpd.conf
を少し編集することで、この動作を変更できます。 ファイル。ファイルの下部で、listen_port
を使用します vsftpdが使用する別のポートを指定するディレクティブ。たとえば、次の行を追加すると、vsftpdはポート2121でリッスンするように指示されます。
listen_port=2121
まとめ
このガイドでは、vsftpdソフトウェアパッケージを使用してUbuntuLinuxでFTPサーバーを作成する方法を説明しました。また、コマンドラインまたはGNOMEGUIをFTPクライアントとして使用してサーバーに接続する方法も学習しました。このガイドに従うことで、ローカルネットワーク上のコンピューターは、コマンドラインまたは優先FTPクライアントを介して、システムにアクセスしてファイルを保存および取得できます。
トラブルシューティング
表示される可能性のある最も一般的なエラーは、サーバーに接続しようとしたときに「接続が拒否されました」というメッセージです。これにはさまざまな理由が考えられますが、通常、ファイアウォールが接続をブロックしているか、vstpdファイルが正しく構成されていないことに関連しています。次のコマンドを実行して、FTPポートがファイアウォールによってブロックされていないことを確認します。
$ sudo ufw allow from any to any port 20,21,10000:10100 proto tcp
また、vsftpdサービスのステータスをチェックして、サービスが実行中であり、起動エラーが発生していないことを確認します。
$ systemctl status vsftpdvsftpdサービスのステータスを確認する
次のコマンドを使用して、vsftpdを開始するか、構成の変更を適用した後にサービスを再起動します。
$ sudo systemctl start vsftpd OR $ sudo systemctl restart vsftpd
最後に、ルーターまたは外部ファイアウォールも接続のブロックに関与している可能性があることに注意してください。 ftp 127.0.0.1
を使用してFTPサーバーに正常に接続できる場合 サーバー自体でコマンドを実行し、上記のトラブルシューティング手順を実行しましたが、リモートシステムからFTPサーバーに接続できない場合は、2つのシステムの間に接続をブロックしているデバイスが存在する可能性があります。