vagrant up実行時に「default: Warning: Authentication failure. Retrying...」が連続で出る問題

vagrant upで仮想マシンを起動時に「default: Warning: Authentication failure. Retrying...」という警告メッセージが出続けるというエラーが発生したので、この問題の解決方法について説明しています。

エラー内容と動作環境

最終更新日:2022/9/5

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

解決方法1、SSHログイン接続を鍵認証ではなくパスワード認証にしてみる

問題のエラーメッセージの部分ですが、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(日本語)

解決方法2、仮想マシンのSSHサービスのssh-rsaを有効にして、鍵認証でSSHログイン接続できるようにする

パスワード認証で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
また、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

一方、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