【Vagrant & VirtualBox】 クライアントソフトから仮想マシンへファイル転送を行う

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

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

ファイル転送先にするWebサーバのドキュメントルート(公開ディレクトリ)や
ファイル転送完了後のブラウザアクセス確認などは以前のこちらの記事を参考にしてください。

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

クライアントソフトから仮想マシンへ接続する

ssh接続情報の確認

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

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

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

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

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

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

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

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

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

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

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

vagrantユーザのグループ変更

(ドキュメントルートのアクセス権、所有者情報を一度、確認する)
ls -ld /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 reload コマンドで仮想マシンを再起動します。
もう一度接続し直して、rootグループへの追加を確認する。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください