vagrant upで仮想マシンを起動時に「default: Warning: Authentication failure. Retrying...」という警告メッセージが出続けるというエラーが発生したので、この問題の解決方法について説明しています。
※ 本ページはプロモーションが含まれています。
VagrantでBox(仮想マシン)のbento/ubuntu-22.04(Ubuntu22.04 LTS)をvagrant upで起動しようとした時、"default: Warning: Authentication failure. Retrying..."という警告メッセージが連発しました。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'bento/ubuntu-22.04' version '202206.13.0' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> 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) => 2200 (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:2200
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection reset. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
〜
default: Warning: Authentication failure. Retrying...
このページではこの問題の解決方法について書いています。
ちなみにこの警告メッセージが連発している途中で強制終了(Control + C)しても、仮想マシン自体は起動できていて、vagrant sshでSSHログインする事もできました。
ただ、共有ディレクトリの/vagrantが共有されない、Vagrantfileの「config.vm.network "private_network"」で設定したローカルIPアドレスが割り当てられないなどの問題がありました。
◾️動作環境とバージョン情報です
OS:macOS Big Sur(バージョン11.6)
仮想マシン(VM)のBox:bento/ubuntu-22.04(Ubuntu 22.04 LTSのBox)
$ vagrant -v
Vagrant 2.2.7
$ VirtualBox -h
Oracle VM VirtualBox VM Selector v6.1.16
問題のエラーメッセージの部分ですが、SSHの認証部分で失敗を繰り返しているようです。まず1つ目の解決策として、鍵認証ではなく、パスワード認証でSSH接続するように変更すれば問題はなくなります。
パスワード認証にするには、Vagrantfileにこの1行を追加します(BoxのSSHログインパスワードが"vagrant"の場合)。
config.ssh.password = "vagrant"
これでvagrant upを実行すると、問題なく起動できるようになります。
$ vagrant up
〜
default: SSH address: 127.0.0.1:2200
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 => /Users/hogeUser/testUbuntu
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
ただ、Vagrantはパスワード認証よりも鍵認証によるSSH接続を推奨しているようです。デフォルトでも鍵認証ですし。
config.ssh - Vagrantfile
Vagrant - SSH Settings(日本語)
パスワード認証でSSH接続にすれば問題解決できたけど、鍵認証のSSH接続を推奨という事なので、もう少しネットで調べてみました。
そして調べてみた結果、Ubuntu22.04 LTSはデフォルトだとssh-rsaの公開鍵認証のサポートが無効になったという事がわかりました。VagrantのSSH公開鍵はssh-rsaなので、それが原因でvagrant up時にSSH認証のエラーを繰り返していたみたいです。
Add support for Ubuntu 22.04 LTS (Jammy) · Issue #1405 · chef/bento · GitHub
ですので、Box(仮想マシン)のUbuntu22.04のSSHサービスのssh-rsa公開鍵認証を有効にすれば、問題解決する事ができます。その設定をするには、Ubuntu22.04の/etc/ssh/sshd_configファイルに、この1行を追加します。
PubkeyAcceptedAlgorithms +ssh-rsa
この1行を追加したら、一度Boxを停止(vagrant halt)して、再度vagrant upで起動したら、問題なく起動する事ができました。
あと、もちろんこれでパスワード認証にするためにVagrantfileに追加した「config.ssh.password = "vagrant"」も削除しても大丈夫です。
ちなみに、ssh-rsaを有効にする前の状態(vagrant up時に警告メッセージが繰り返される状態)では、Boxがあるディレクトリ(Vagrantfileがあるディレクトリ)の下に、
".vagrant/machines/default/virtualbox/private_key"、
".vagrant/machines/default/virtualbox/synced_folders" は存在しませんでした。
$ ls .vagrant/machines/default/virtualbox/
action_set_name creator_uid id index_uuid vagrant_cwd
また、vagrant ssh-configコマンドで仮想マシン(Box)にSSH接続する秘密鍵を確認すると、
"/Users/hogeUser/.vagrant.d/insecure_private_key"になっています。
$ vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/hogeUser/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
vagrant ssh-configコマンドについては別ページでもう少し詳しく書いているので、よければ参考にしてください。
vagrantで起動した仮想マシンにsshコマンドで接続する
一方、ssh-rsaを有効状態にした場合、ちゃんとBox下のディクレトリに鍵が作成されていました。
$ ls .vagrant/machines/default/virtualbox/
action_provision box_meta id private_key vagrant_cwd
action_set_name creator_uid index_uuid synced_folders
$ vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/hogeUser/testUbuntu/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL