Vagrantで立ち上げた仮想環境にIPアドレスを振ってsshでログインする

この記事はMac向けです。他のOSの場合は、sshコマンド等別途準備してください。

事前準備

VirtualBoxのインストール

インストール後、起動してください。

Vagrantのインストール

インストール後、vagrantコマンドが使えるようになります。

$ vagrant --version
Vagrant 1.9.4

Vagrantプロジェクトの初期化からVM起動まで

適当な場所に作業ディレクトリを作成。場所と名前はどこでも可です。以下の説明は適当に読み替えてください。
今回の説明では、VMのOSにCentOS7を使います。他のOSを使う場合はここで探して下さい。

$ mkdir -p /your/directory/vm1
$ cd /your/directory/vm1

initコマンドで初期化します。Vagrantfileが作成されます。

$ vagrant init centos/7

VirtualBoxにVMを起動

$ vagrant up

スクリーンショット 2017-05-17 14.50.20.png

無事立ち上がったら、VMにvagrant sshでログインできます。ログアウトはexitです。

$ vagrant ssh

destroyコマンドで、VirtualBoxのVMを停止・削除できます。vm内での変更は破棄されます。

$ vagrant destroy

Vagrantで立ち上げたVMにディフォルト設定でsshでログイン

vagrant sshではなく、通常のsshコマンドでログインしてみます。

ssh-configコマンドで、SSH接続情報を確認できます。

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /your/directory/vm1/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

ディフォルトでは、ホストOSのport 2222に、VMのport 22がフォワードされています。このため、localhostのport 2222に対してsshでログインできます。選んだOSによってはUserがvagrant以外になっているかもしれません。

$ ssh -i /your/directory/vm1/.vagrant/machines/default/virtualbox/private_key -p 2222 vagrant@127.0.0.1
とか
$ ssh -i /your/directory/vm1/.vagrant/machines/default/virtualbox/private_key -p 2222 vagrant@localhost

[vagrant@localhost ~]$ 

su -でrootになる場合、パスワードはvagrantです。

VMに接続するポートを変えてsshログイン

ディフォルトの設定のままで2台目のVMを起動させると、port 2222にフォワードしようとして失敗するため、2223を割り振ってみます。
新しい作業ディレクトリを作って、vagrant initコマンドを実行し、作成されたVagrantfileをテキストエディタで開きます。

$ mkdir -p /your/directory/vm2
$ cd /your/directory/vm2
$ vagrant init centos/7
$ vi Vagrantfile

Vagrantfileに1行追加

config.vm.network "forwarded_port", guest: 22, host: 2223, id: "ssh"

vagrant upでVMを起動して、vagrant ssh-configで接続情報を確認すると、ポートが2223に変わっています。

$ vagrant up
$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2223
以下略

port 2223でsshログインできます。

$ ssh -i /your/directory/vm2/.vagrant/machines/default/virtualbox/private_key -p 2223 vagrant@localhost
[vagrant@xxx ~]$ 

VMにIPアドレスを振ってsshログイン

今度はVMにホストOSとは別の、IPアドレス割り振って、ホストOSからssh接続してみます。
また新しい作業ディレクトリを作成して、init後、Vagrantfileに1行追加します。

$ mkdir -p /your/directory/vm3
& cd /your/directory/vm3
$ vagrant init centos/7
$ vi Vagrantfile

Vagrantfileに1行追加します。192.168.10.2の所は環境に応じてかえてください。

config.vm.network "private_network", ip: "192.168.10.2"

VMに対してホストOSとは別のIPで、sshでログインできるようになりました。

$ vagrant up
$ ssh -i /your/directory/vm3/.vagrant/machines/default/virtualbox/private_key vagrant@192.168.10.2
[vagrant@xxx ~]$