Vagrant 事始め 03 - 仮想マシンにログインする

# ローカルマシンから仮想マシンに SSH 接続できるようにする

[前回](https://qiita.com/centipede/items/8ac81accd014d21b83bf)からの続きです。

## Vagrantfile に設定を追加する

```ruby:Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  # 仮想マシンに IP 192.168.33.10 を割り当てて、ローカルマシンからのみ接続できるようにする
  config.vm.network "private_network", ip: "192.168.33.10"
end
```

## 仮想マシンを起動する

```
> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'centos/7' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
[default] GuestAdditions 5.2.6 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Rsyncing folder: /cygdrive/c/Vagrant/centos8/ => /vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
```

## 仮想マシンに SSH 接続に必要な情報を設定する

仮想マシンが起動したら、`vagrant 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 C:/Vagrant/centos7/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
```

上記の `IdentityFile C:/Vagrant/centos7/.vagrant/machines/default/virtualbox/private_key` にある **C:/Vagrant/centos7/.vagrant/machines/default/virtualbox/private_key** が仮想マシンのログインに必要な秘密鍵になります。

putty などのターミナルでログインする場合は、上記の秘密鍵を指定してください。ログインユーザー名は **vagrant** です。ssh コマンドを利用する場合は、

```
$ ssh -l vagrant -i .vagrant/machines/default/virtualbox/private_key 192.168.33.10
The authenticity of host '192.168.33.10 (192.168.33.10)' can't be established.
ECDSA key fingerprint is SHA256:
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.33.10' (ECDSA) to the list of known hosts.
[vagrant@localhost ~]$ uname -a
Linux localhost.localdomain 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
```

となります。

# SSH を使わずに仮想マシンにログインをする

Vagrantfile に Virtualbox のターミナルに関する設定を使用すると、SSH を使わずに仮想マシンにログインができます。

## Vagrantfile に Virtualbox の設定を記述する

```ruby:Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  # 仮想マシンに IP 192.168.33.10 を割り当てて、ローカルマシンからのみ接続できるようにする
  config.vm.network "private_network", ip: "192.168.33.10"

  # Vagrantfile 生成時の設定からコメントアウトをしただけ
  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.memory = "1024"
  end
end
```

無事に起動すると、下図のようなターミナルウィンドウが自動的に起動します。

ログインできるアカウントは、`USER: vagrant` `PASS: vagrant` になります。

![2018-04-10_15h54_17.png](https://qiita-image-store.s3.amazonaws.com/0/248967/4fc417d3-0180-7ee8-f44b-6773aba78225.png)

最初の仮想マシンを起動するときにインストールされた Virtualbox Guest Additions が、このターミナルを表示するときに必要になります。

# SSH クライアントと Virtualbox のターミナルについて

個人的には Virtualbox のターミナルより、SSH クライアントの方が便利だと思います。

このターミナルは縦横のサイズが固定されていますし、コピペができません。逆に SSH クライアントだとウィンドウのサイズは適宜変更できますし、コピペもできるので便利です。

* [Vagrant 事始め 04 - Vagrant のネットワーク設定](https://qiita.com/centipede/items/64e8f7360d2086f4764f)