はじめに
環境
- Ubuntu18.04server※ゲストOS
- Windows10 Professional ※ホストOS
- VirtualBox5.2.12
- Vagrant2.1.1
この記事の目的
UbuntuのBOXを作ってvagrant up
したらSSH公開鍵認証のところでタイムアウトしてうまく行きませんでした。
回避方法について共有します。
参考情報
BOXファイルの作り方は以下の記事を参考にしました。
VagrantでCentOS7のBOXを作成する(Mac)
vagrantのboxを自作する
SSH公開鍵認証について正攻法で攻めるなら以下の記事が参考になるでしょうか。
(私はめんどくさいので別の方法に逃げました)
Vagrantの公開鍵、秘密鍵を用いたssh接続の設定
Ubuntuサーバ版のインストール方法はこちら
【Ubuntu 18.04 LTS Server】インストールする
作業内容
事前作業
今回はUbuntuなのでCentOS系との違いを少し記載します。
Ubuntuの場合はCentOSと違ってOSインストール時にユーザ登録します。(CentOSではrootのパスワードを設定)
vagrantなのでユーザ:vagrant、パスワード:vagrant
このvagrantはsudoグループに属しているので最初からsudoできますが、パスワードが必要な設定になっています。
パスワード不要にします。
terminalから以下の設定を行います。(これを行わないとvagrant up
時にうまくいかない)
$ sudo visudo
# 以下の行を変更
%sudo ALL=(ALL:ALL) ALL
↓
%sudo ALL=(ALL) NOPASSWD:ALL
rootのパスワードを設定します。
パスワード設定しないとrootにsuできません。(絶対rootで作業しない人は必要ありません)
$ sudo passwd root
リモートログインするための準備が必要です。
CentOSでBOX作ったときはこの作業は必要ありませんでした。
編集するファイルはssh_configではなく、sshd_configです。(1回間違えた)
# SSHサーバソフトをインストールする必要がある
$ sudo apt install -y openssh-server
$ sudo vi /etc/ssh/sshd_config
# 以下の行のコメントを外す
PasswordAuthentication yes
エディタ、開発環境一式もインストールしましょう。
ubuntuはCentOSと全然違います。vimも最初から入ってなかったし。
# 開発環境一式(C++など)
$ sudo apt install -y build-essential
# 好みのエディタを入れよう
$ sudo apt install -y vim neovim emacs
SSH認証でタイムアウト
VM環境を作ってからBOXファイルを作って、さあvagrant up
で起動しようとしたらAuthentication failure.が延々と出て最後にタイムアウトとなりました。vagrant ssh
で入れるのだけどネットワーク設定が反映されないのでターミナルソフトからリモートで入れないのがストレス。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> 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: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
対処(案)
まず、一旦該当仮想マシン環境を破壊(destroy)し、Vagrantfileを編集します。boxのremoveは必要ないです。
以下の方法でvagrant up
し直せばSSH公開鍵認証ではなく、Password認証に切り替わりSSH認証で延々Warningが出ることがなくなりスッキリ。
ターミナルソフトからリモートログインもできるようになりました。
# 起動している場合、シャットダウンする。
$ vagrant halt
# 破壊(destroy)する。破壊って言い方が強烈だな。
$ vagrant destroy
# Vagrantfileを編集する。(好みのエディタで。私はWin環境でもVimを使っている。)
$ vim Vagrantfile
# 以下を追加する
config.ssh.password = "vagrant"
# 仮想マシン起動
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> 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: password
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => C:/usr/local/virtualBox/ubuntu_1804server
おわりに
正しいやり方が他にあるのだろうけど追々調査してみます。