ローカルマシンから仮想マシンに SSH 接続できるようにする
前回からの続きです。
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 の設定を記述する
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
になります。
最初の仮想マシンを起動するときにインストールされた Virtualbox Guest Additions が、このターミナルを表示するときに必要になります。
SSH クライアントと Virtualbox のターミナルについて
個人的には Virtualbox のターミナルより、SSH クライアントの方が便利だと思います。
このターミナルは縦横のサイズが固定されていますし、コピペができません。逆に SSH クライアントだとウィンドウのサイズは適宜変更できますし、コピペもできるので便利です。