http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.box から13.04のVagrantイメージを使用しました仮想マシンとsshを使用して接続しようとしました。ただし、SSHは認証を試みた段階に到達することなく、常に即座に切断しました。
VirtualBox GUIでVMを開き、SSHログファイル(auth.log)を確認しました。次のような行でいっぱいでした:
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load Host key: /etc/ssh/ssh_Host_rsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load Host key: /etc/ssh/ssh_Host_dsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: error: Could not load Host key: /etc/ssh/ssh_Host_ecdsa_key
Jul 25 17:57:02 vagrant-ubuntu-raring-32 sshd[898]: fatal: No supported key exchange algorithms [preauth]
この問題は、次のコマンドを実行することで解決しました。
Sudo ssh-keygen -f /etc/ssh/ssh_Host_ecdsa_key -N '' -t ecdsa
Sudo ssh-keygen -f /etc/ssh/ssh_Host_dsa_key -N '' -t dsa
Sudo ssh-keygen -f /etc/ssh/ssh_Host_rsa_key -N '' -t rsa
特に(a)UbuntuをISOイメージからインストールしたときに自分で実行する必要がなかったため、(b)Vagrantは実行後に設計されるため、 vagrant up
追加設定なしですぐにVMを使用できます。
近い将来に多数の仮想マシンを作成する必要があり、Vagrantを使用してそれを実行できることを望んでいましたが、各マシンで手動でSSHを修正する必要がある場合は実行できません。
なぜこれが起こるのか、それを修正するために何ができるのか知っていますか?バグとして報告すべきですか?
これは、古いベースボックスのバグのようです。現在のベースボックスイメージ(2013年8月20日生成)では、ボックスが初めて起動したときにキーが自動的に作成されているように見えます。
ワークロード:
VirtualBoxで〜/ .vagrant.d/boxes/raring/box.ovfアプライアンスをインポートします
VBoxManage import ~/.vagrant.d/boxes/raring/box.ovf
VM Nameを取得
VBoxManage list vms
VMを起動します
VBoxManage startvm ubuntu-cloudimg-raring-vagrant-AMD64
/etc/rc.localに次の行を含めます(もちろんVM自体に!):
test -f /etc/ssh/ssh_Host_dsa_key || dpkg-reconfigure openssh-server
VMのシャットダウン
Sudo halt
古い画像を削除する
rm ~/.vagrant.d/boxes/raring/box.ovf ~/.vagrant.d/boxes/raring/box-disk1.vmdk
VMを.ovf形式でエクスポート
VBoxManage export ubuntu-cloudimg-raring-vagrant-AMD64 --output ~/.vagrant.d/boxes/raring/box.ovf
完了:)
バグレポートも作成しました: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/121795
これはSSHホストキーの問題です(公開キー認証とは関係ありません)。
問題は、1回目の起動(/etc/ssh/
)で、ubuntuクラウドの浮浪者イメージが(vagrant up
にない場合)新しいホストキーの生成に失敗したことでした。
Mosheが言及したSSHホストキーを手動で生成することに加えて
Sudo ssh-keygen -f /etc/ssh/ssh_Host_ecdsa_key -N '' -t ecdsa
Sudo ssh-keygen -f /etc/ssh/ssh_Host_dsa_key -N '' -t dsa
Sudo ssh-keygen -f /etc/ssh/ssh_Host_rsa_key -N '' -t rsa
次のコマンドを追加することでもできます/etc/rc.local
test -f /etc/ssh/ssh_Host_dsa_key || dpkg-reconfigure openssh-server
それが役に立てば幸い。