VirtualBoxに作成した仮想マシンにインストールしたCentOS7でFTP接続

FTP接続とは

エフティーピー
 

FTPFile Transfer Protocol ファイル転送プロトコル

FTPとは、インターネットなどのTCP/IPネットワークファイルを転送するのに使われるプロトコルの1つ。

FTPサーバFTPクライアントの二種類のソフトウェアを用い、両者の間で接続を確立してファイルを送受信することができる。

サーバ側ではアカウント名とパスワードによる利用者の認証を行い、それぞれの利用者に許可された権限や領域でファイルの送受信が行われる。

不特定多数の利用者にファイルを配布するなどの目的のため、利用者登録を行っていない者でも自由に接続できる「anonymous」(匿名)と呼ばれる特殊なアカウントが用意されていることがあり、任意のパスワード(空欄でもよい)で接続できる。

このような利用形態を「anonymous FTP」と呼び、かつてはフリーソフトウェアの配布などでよく利用された。

FTPではコマンドや応答など制御データの送受信用と、ファイルの一覧やファイルの内容などデータ本体の送受信用に2つのコネクション(通信路)を確立する。

制御用コネクションはクライアント側からサーバ側へ接続を開始して確立し、利用者認証などに使われる。

データ本体のコネクションはサーバ側からクライアントの指定したポートへ接続を開始するアクティブモード(ポートモード)と、制御用と同様にクライアント側から接続を開始するパッシブモードPASVモード)がある。

通常はアクティブモードを用いるが、家庭や企業の内部ネットワークからNATファイアウォールなどを介して接続している場合、外部から任意のポートに接続できないことが多いため、パッシブモードを用いる。

FTPはそれ自体は認証情報やファイルの暗号化に対応していないため、暗号化プロトコルSSL/TLSと組み合わせてFTPSとして利用したり、ssh上でFTPに似たファイル転送を行えるSFTPを用いることが多い。

FTPは単独で使う場合に安全な方法ではないけど、暗号化のプロトコルと組み合わせたりすればセキュリティ上安全に利用できるようです。

FTP接続をするには、FTPクライアントFTPサーバーの2つが必要のようです。

FTPクライアント

対応OSFTPクライアントソフトウェア
Windows ffftp
MacOS X Cyberduck
Linux gFTP

⇩  FTPクライアントソフトについては下記へ

フリーのFTPクライアントソフト10選【初心者でも安心】 | TechAcademyマガジン 

⇩  MacOS X)で使えるFTPクライアントソフトについては下記サイトへ

構想雑文 : 2014年現在 Mac OS Xで無料で使えるFTPソフトまとめ - livedoor Blog(ブログ)

FTPサーバー 

対応OSFTPサーバーソフトウェア
Windows IIS(Internet Information Service)7.5 FTP Service
windows7(64bit)ではデフォルトで内蔵
⇩  FTPサーバー起動のさせ方は下記サイトへ
Windows7-FTPサーバー-設定方法
MacOS X デフォルトで内蔵
⇩  FTPサーバー起動のさせ方は下記サイトへ
BOCO & Photography Mac OS 10.8.2(Mountain Lion)でFTPサーバー動かす!
Linux vsftpd、proFTPD、Pure-FTPD

ゲストOS(CentOS7)にvsftpdをインストール

VirtualBoxを起動し、仮想マシン(CentOS7)を起動しGUIでログインしたら、『アプリケーション』『お気に入り』『端末』を選択します。

『su』コマンドで、root権限に切り替えます。

 su  

yum -y install vsftpd』コマンドでvsftpdをインストールします。

 yum -y install vsftpd

『rmp -q vsftpd』コマンドでvsftpdがインストールされたか確認できます。

vsftpdのバージョンが表示されれば、インストール成功です。

 rmp -q vsftpd

 

vsftpd.confファイルを設定

.confという拡張子がついたものは、設定ファイルであることが多いそうです。

これは、『configure(設定)』を省略したものということらしいです。

『端末』でroot権限になっている状態で『cp』コマンドを実行し、バックアップファイルを作成します。

 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bk

バックアップファイルが作成できたら、Vimエディターで、vsftpd.confファイルを編集していきます。下記コマンドを実行します。 

 vim /etc/vsftpd/vsftpd.conf 

Vimでファイルを開いたら、編集していきます。

変更前変更後
anonymous_enable=YES anonymous_enable=No
#ascii_upload_enable=YES ascii_upload_enable=YES
#ascii_download_enable=YES ascii_download_enable=YES
listen=No listen=YES
listen_ipv6=YES listen_ipv6=No

 

それぞれの項目の意味

  • anonymous_enable=Noとすることで匿名FTP機能を無効にします。
  • ascii_upload_enable=YESとすることでASCIIモードでアップロード 。
  • ascii_download_enable=YESとすることでASCIIモードでダウンロード。
  • listen=YESとすることでIPv4の接続も可能に。
  • listen_ipv6=NoとすることでIPv6だけじゃなく、IPv4も接続可能に。 

 

編集が済んだら、『Escキー』で通常モードに戻り『:wq』コマンドで内容を保存してvimエディターを終了させ『端末』画面に戻ります。

 

vsftpd(FTPサーバー)を起動する

root権限になっているのを確認してから、下記コマンドを実行します。  

systemctl start vsftpd.service

起動してるかの確認は、下記コマンドでできます。

systemctl is-active vsftpd.service

 

lftpコマンドがインストールされてるか確認

CentOSでは、コマンドラインFTPサーバーにアクセスする『lftp』コマンドが用意されています。用意されていない場合もあるので、lftp』コマンドをインストールするためのコマンドを実行します。

yum -y install lftp

これで、インストールされてた場合は、新しいバージョンに更新され、インストールされていなかった場合はインストールされます。

ユーザー名でvsftpdサーバーにFTP接続してみます。

vsftpdを起動してる状態で、下記コマンドを実行します。(localhostの部分はIPアドレスでもOK。)

lftp ユーザー名@localhost

f:id:ts0818:20151218213447j:plain

『quit』コマンドで接続を閉じます。

quit

f:id:ts0818:20151218215222j:plain

vsftpdサーバーを停止するには『systemctl stop vsftpd.service』コマンドを実行します。

systemctl stop vsftpd.service 

f:id:ts0818:20151218215221j:plain

CentOS6とCentOS7でコマンドが変わったようです。

機能
CentOS 6.xCentOS 7
サービスの開始
service vsftpd start systemctl start vsftpd.service
サービスの停止
service vsftpd stop systemctl stop vsftpd.service
サービスの再起動
service vsftpd restart systemctl restart vsftpd.service
サービスの設定ファイルの再読み込み
service vsftpd reload systemctl reload vsftpd.service
サービスの状態確認
service vsftpd status systemctl status vsftpd.service
サービスが既に稼働してる場合はサービスを再起動
service vsftpd condrestart systemctl condrestart vsftpd.service
次回OS起動時にサービスを自動起動する
service vsftpd on systemctl enable vsftpd.service
次回OS起動時にサービスを自動起動しない
service vsftpd off systemctl disable vsftpd.service
ランレベルごとに全サービスが有効・無効かの表示
chkconfig --list systemctl -t service list unit-files
もしくは
ls /etc/systemd/system/*.wants
ランレベルごとに指定したサービスが有効・無効かの表示
chkconfig --list vsftpd ls /etc/systemd/system/*.wants/vsftpd.service

 

FFFTPで接続

FTPサーバー側

まずは、VirtualBoxを起動し、仮想マシン(CentOS7)の『設定(S)』>『ネットワーク』の『アダプター1』を『ブリッジアダプター』にしておきます。

f:id:ts0818:20151224130305j:plain

仮想マシン(CentOS7)を起動し、ログインしたら『アプリケーション』>『お気に入り』>『端末』を選択します。

『su』コマンドでroot権限になったら、『systemctl start vsftpd.service』コマンドでvsftpdサーバー(FTPサーバー)を起動させておきます。

f:id:ts0818:20151224130743j:plain

 

FTPクライアント側 

ホストOS(windows7)にFFFTPFTPクライアントソフト)をインストールして、ゲストOS(CentOS7)のvsftpdサーバーにFTP接続します。

⇩  FFFTPは下記サイトなどでダウンロードし、インストールしておきます。

FFFTP - 窓の杜ライブラリ

f:id:ts0818:20151224115555j:plain 

FFFTPソフトをインストールしたら、 起動させます。

『新規ホスト(N)』ボタンを選択クリックします。

f:id:ts0818:20151224122317p:plain

下記のように入力して『OK』ボタンを選択クリックします。

ホストの設定名 ⇒ 任意(自分の自由に決めてOK)

ホスト名 ⇒ CentOS7で『ifconfig』コマンドで表示されたenp0s3:のinetの数字

ユーザー名 ⇒ CentOS7ログイン時のユーザー名

パスワード ⇒ CentOS7ログイン時のパスワード

f:id:ts0818:20151224122616j:plain

『接続(S)』ボタンを選択クリックします。

f:id:ts0818:20151224122318p:plain

無事、ホストOS(windows7)からゲストOS(CentOS7)に接続されました。 

f:id:ts0818:20151224123440j:plain

 

FFFTP側の設定が正しくできていて接続できない場合、ゲストOSを内蔵した仮想マシン(CentOS7)のFirewalldというものでlocalhost以外は接続できないようにブロックされてる可能性があるので、CentOS7で下記コマンドを実行すると接続できるかもしれません。

 systemctl stop firewalld

FFFTP接続が終わったら、firewalldを起動させておきましょう。

 systemctl start firewalld

 

firewalldをstopさせるやり方はベストではないと思うので、あくまで応急処置と捉え、firewalldの設定をしていくのが良いのかもしれません。

⇩  firewalldの操作方法について詳しくは下記サイトへ

CentOS7 firewalldの設定方法

CentOS7.1 64bit firewalldによるアクセス制御 | kakiro-web カキローウェブ