Vagrant★WinSCPでつないでルート権限(sudo)を与える

Vagrantの仮想マシンでubuntuを設定する際に、コマンド叩いてviで編集して・・・という作業が面倒に感じてきたので、WinSCPをつないで作業効率の向上を図ります。
前提条件
ここでは、Vagrant BoxesからダウンロードしたUbuntuを使うことを前提で話を進めます。Vagrant BoxesからUbuntuをダウンロードする方法はここを参照。
VagrantのUbuntuにWinSCPで接続
今回はWinSCPからUbuntuへ接続を行い、ルート権限を与えて設定ファイル等を編集できるようにします。
(1)private_keyの確認
安全に接続するためにはprivate_keyが必要です。次のフォルダにprivate_keyがあります。確認してみましょう。
C:\任意の場所\vagrant_ubuntu(作成したubuntu用のフォルダ)\.vagrant\machines\default\virtualbox
因みに設定ファイルVagrantfileは.vagrantと同じフォルダに存在しています。
(2)WinSCPの起動と初期設定
WinSCPを起動するとログイン画面が開きます。そこで「新しいサイト」を選択すると次のような画面になります。

順番に内容を入力していきましょう。
①ホスト名
今回の場合、①にはIPアドレスを入力します。Vagrantfileで設定した項目に次のような内容があります。
config.vm.network "private_network", ip: "192.168.33.10"
ここで設定したIPアドレスを入力します。上記の場合は192.168.33.10になります。
②ユーザ名
②にはユーザ名を入力します。Vagrant BoxesからダウンロードしたOSはだいたいユーザ名がvagrantになってると思うので(たぶん)、vagrantを入力します。
③パスワード
③にはパスワードを入力します。②と同様だいたいのOSはパスワードがvagrantになっているはずなので、vagrantを入力します。
(3)private_keyの設定
private keyの設定にはprivate_keyを.ppk形式に変換する必要があります。
private_keyの.ppk形式への変換
次の画面の通り設定ボタンをクリックして下さい。

すると画面が開くので「認証」をクリックして画面を切り替えます。

次にprivate keyの選択を行います。下の画面の赤枠をクリックして下さい。

秘密鍵(private_key)の場所は(1)で確認した通り、次のようになります。
C:\任意の場所\vagrant_ubuntu(作成したubuntu用のフォルダ)\.vagrant\machines\default\virtualbox
画面を開いて該当フォルダに移動してください。すると次のような画面になります。

何も表示されません。private_keyを表示させる為に赤枠の「PuTTY 秘密鍵ファイル(*.ppk)」を「すべてのファイル(*.*)」に変更します。
すると次のようにprivate_keyが表示されました。選択して「開く」をクリックして下さい。

上記の手順でprivate_keyが見つからない場合は、コマンドプロンプトでprivate_keyの場所を確認しましょう。
まずはコマンドプロンプトを開いてVagrantfileのある場所まで移動してください。そこで次のコマンドを入力してください。
vagrant ssh-config
すると次のように表示されます。
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile "C:/Users/・・・/0/virtualbox/vagrant_private_key"
IdentitiesOnly yes
LogLevel FATAL
この中で表示されている、IdentityFile “C:/Users/・・・/0/virtualbox/vagrant_private_key" がprivate_keyのある場所です。
「秘密鍵 OpenSSH を PuTTY 形式に変換しますか?」と表示されるので「OK」をクリック。

「変換された秘密鍵を保存」の画面が開くので「保存」をクリック。保存する場所はどこでも構いませんが、ここでは先ほどのprivate_keyと同じフォルダに保存します。

「秘密鍵が変換され~に保存されました。」と表示されるので「OK」クリック。

これでprivate_keyの変換・設定は完了しました。
(4)sudo ルート権限を与える
※基本的な接続設定は既に完了しているのでここ(4)の作業はルート権限が不要な方はやらなくても問題ありません。
それでは(3)でやった作業と同じように、「設定」をクリックして画面を開きます。
画面が開いたら「SFTP」をクリックして、「SFTPサーバ」の欄へ次のように入力します。
(これはOSがUbuntuの場合です。)
sudo /usr/lib/openssh/sftp-server

OSがCentOSの場合は次のように入力します。
sudo /usr/libexec/openssh/sftp-server
これでルート権限が与えられました。
(5)保存してUbuntuに接続
それでは設定を保存します。

保存したらログインします。

「警告 – 潜在的なセキュリティ違反」と表示されますが気にせず「更新」をクリック。

これで全ての作業は完了です。ちゃんと設定ファイルが編集できるようになりました。
ディスカッション
コメント一覧
Awesome post! Keep up the great work! 🙂