今回は、Fedora33用のVagrant Boxを作ったけど、どうもスムーズに起動しないというお話。まれによくあるsamba4: Warning: Authentication failure. Retrying…
が延々とタイムアウトまで続くというケースです(”samba4″ は適当です)。
裏口からVMに入って /var/log/secure を見てみると、こんなログが延々と続いています。
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedKeyTypes [preauth]
調べてみたところ、どうもこういうことみたいです。
Vagrant の insecure_private_key と呼ばれるデフォルトのキーペアが ssh-rsa で作られているんですが、このサポートが Fedora33 ではなくなったということらしい。
ここの手順通りに
PubkeyAcceptedKeyTypes=+ssh-rsa
を追加してみても、やっぱりうまくいきません。
自分のスキルでは根本原因の解決は無理っぽいので、とりあえずワークアラウンド。
まず、起動時の(事実上無意味な – リトライしても絶対うまくいなかない)
samba4: Warning: Authentication failure. Retrying...
の表示を抑制するため、Vagrantfile でタイマーを短め(30秒)に設定。
config.vm.define "samba4" do |samba4|
samba4.vm.box = "fedora33"
samba4.vm.network "private_network", ip: "192.168.56.65"
samba4.vm.hostname = "samba4"
samba4.vm.boot_timeout = 30
samba4.vm.provider "virtualbox" do |samba4|
samba4.memory = "2048"
end
vagrant up が異常終了しても VM 自体は起動できているので、PS> ssh vagrant@127.0.0.1 -p 2222
で入ってキーペアを手動で作成。不思議なのは$ ssh-keygen -t rsa -b 4096 -f fedora33
くらいで作ると、Windows Terminal からPS> ssh vagrant@127.0.0.1 -p 2222 -i fedora33
みたいにして SSH できるんだけど、この秘密鍵を PuTTYGen で ppk 形式にするとなぜか通らなくなる。もう少し先進的(?)な
$ ssh-keygen -t ecdsa -b 4096 -f fedora33
にすると PuTTY でも通るようになりました。
さらに、vagrant up が正常終了しないため、追加で設定した NIC の “private_network” の設定までたどり着かずに DHCP になってしまうようなので、手作業で NIC の設定を静的IPに変更します。
# 接続一覧の表示。「有線接続1」が private_network で設定した方。
[root@localhost ~]# nmcli con
NAME UUID TYPE DEVICE
enp0s3 a7472fa3-8b08-3068-8e6f-64cefb9a64a8 ethernet enp0s3
有線接続 1 3b6489c2-e2db-3dea-8e09-9b96e35d5e63 ethernet enp0s8
# 入力しづらい漢字の接続を削除
[root@localhost ~]# nmcli conn delete 3b6489c2-e2db-3dea-8e09-9b96e35d5e63
接続 '有線接続 1' (3b6489c2-e2db-3dea-8e09-9b96e35d5e63) が正常に削除されました。
# 改めて接続を作成。eth0 とか eth1 とかいう名前の方が混乱しなくて済むかも?
[root@localhost ~]# nmcli con add type ethernet ifname enp0s8 con-name enp0s8
接続 'enp0s8' (dac68978-5059-4b28-ac4a-7ce6563746c8) が正常に追加されました。
# 作成した接続プロファイルを静的IPに変更
[root@localhost ~]# nmcli con mod enp0s8 ipv4.method manual ipv4.address 192.168.56.65/24 ipv4.dns 8.8.8.8 ipv4.gateway 192.168.0.1 connection.autoconnect yes
[root@localhost ~]# reboot
とりあえず、これで使えるようになりました。