【Vagrant & VirtualBox】 FTPクライアントを使用して仮想マシンへファイル転送を行う

Vagrant & VirtualBoxで立ち上げた仮想マシンへFTPクライアントで接続し、
ファイル転送を行う方法をメモします。

ssh接続に対応したFTPクライアントソフトを使用することで
仮想マシンへのファイル転送と、テキストエディタを開いて仮想マシン上で直に開発が出来るようになります。

FTPクライアントを使用して仮想マシンへ接続する

ssh接続情報の確認

仮想マシンへssh接続するために必要な情報を事前に確認します。

仮想マシンのVagrantfileのあるディレクトリ内でコマンド、 vagrant ssh-config を実行します。
(マシンは起動しておく必要があります)

KENnoMacBook-ea:centos7_lamp ken$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/(ユーザ)/vagrant_machines/centos7_lamp/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

上記の表示内容から接続に必要な項目は以下となります。

  • HostName(アドレス)127.0.0.1
  • User(ユーザ名)vagrant
  • Port(ポート)2200
  • IdentityFile(認証鍵の場所) /Users/(ユーザ)/vagrant_machines/centos7_lamp/.vagrant/machines/default/virtualbox/private_key

FTPクライアントソフトを開き、接続情報へ確認した内容を入力していきます。
今回は FileZilla というFTPクラアントを使用していますが、ssh接続に対応したソフトであれば基本的に同じかと思います。

(FileZilla、サイトマネージャー接続設定画面)

プロトコルをsftp(sshで暗号化された通信)に指定してアドレス、ユーザ名、ポート番号の入力と
パスワードによる接続が許可されていないため鍵認証を行わなければいけませんので、
接続情報のうちIdentityFileの項目で確認したパスの通り、認証鍵であるprivate_keyファイルを参照します。

(Macの場合)
private_keyファイルは仮想マシンのVagrantfileと同じディレクトリ内で、通常は不可視となっている場所にあります。
「コマンド」 + 「shift 」+ 「. (ピリオド)」でFinder上から不可視ディレクトリを表示した状態でprivate_keyファイルを参照します。

接続が完了するとクラアントソフト上のリモート接続先に仮想マシンの内容が表示され、
特に指定を行っていなければ /home/vagrant がカレントディレクトリとなります。

仮想マシンへファイルを転送する

FTPクライアントから接続が可能になったので、例としてWebサーバのドキュメントルートにファイルを転送していきたいですが
その前にMacのターミナル上から仮想マシンへ接続して以下の設定を行っておく必要があります。

VagrantでWebサーバを構築する方法は以下の記事を参照ください。

VagrantとVirtualBoxで仮想環境を構築する③ Webサーバー構築編

vagrantユーザのグループ変更

(ドキュメントルートのアクセス権、所有者情報を一度、確認する)
ls -ld /var/www/html

[vagrant@localhost ~]$ ls -ld /var/www/html
drwxr-xr-x. 2 root root 6  7月  8 20:56 /var/www/html

vagrantユーザのグループを上記で確認したドキュメントルートの所有グループ、rootに変更します。

sudo usermod -G root vagrant

(vagrantマシン再起動を推奨)

ドキュメントルートのアクセス権限を変更する

ドキュメントルートに設定されているアクセス権限を、
所有グループに対して書き込み (w) が出来るようにデフォルトの状態から変更します。

sudo chmod -R 775 /var/www/html

以上の設定でvagrantユーザで接続時にファイル転送が可能になります。

ファイルを転送する

ローカルからリモートのドキュメントルート内にファイルを転送します。

FileZillaの場合、ファイルをドラッグ&ドロップでコピーして転送可

ファイルが転送出来たら、ブラウザを開いてページへアクセス確認を行います。

ファイル転送出来ないとき

先に行ったvagrantユーザに対してrootグループへの追加が反映出来ていない可能性があります。
(完了しないとファイルの転送が出来ません)

groups コマンドで所属グループを確認出来ます。

[vagrant@localhost html]$ groups
vagrant

接続を一度切ってから、vagrant reload コマンドで仮想マシンを再起動します。
もう一度接続し直して、rootグループへの追加を確認する。

[vagrant@localhost ~]$ groups
vagrant root

Follow me!