タイトルのエラーが発生したが、ググっても今回の原因の解決策が見当たらなかったため、解決法をここに示す。
事象
vagrant sshすると、Permission deniedとなりsshログインできなくなりました。
$ vagrant ssh
vagrant@127.0.0.1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
sshログインに失敗した仮想サーバーは、下記のVagrantfileで構築したものです。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.synced_folder ".", "/home/vagrant"
config.ssh.insert_key = false
end
解決法
Vagrantfileを以下のように変更した後、vagrant reloadをします。
変更前
config.vm.synced_folder ".", "/home/vagrant"
↓
変更後
config.vm.synced_folder ".", "/home/vagrant/working"
原因
変更前のsynced_folderの設定で、仮想サーバー内の/home/vagrant/が上書きされて、sshに必要な/home/vagrant/.ssh/が消されたためです。
仮想サーバー内の状況は、以下の画像のように、VirtualBoxより対象の仮想サーバーにログインすることで確認いただけます。
先に述べた解決法を実施することで、無事に、/home/vagrant/配下にsshの設定フォルダがあること、vagrant sshできることを確認できました。
$ vagrant ssh
Last login: Fri Aug 30 15:39:59 2019
[vagrant@localhost ~]$
当事象が発生しうる他の原因
今回の発生原因は、synced_folderによるものでしたが、他にも下記のような原因で発生し得るようです。
・ユーザーにprivate_keyへのアクセス権限がない。
https://qiita.com/RyutaKojima/items/81c47ad085ccb7c69a90
・Vagrantがキーペアを置き換えた。
https://github.com/hashicorp/vagrant/issues/9831
まとめ
同じ問題を抱える人の助けになれば。