ฉันใช้ภาพ Vagrant สำหรับ 13.04 จากhttp://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-i386-vagrant-disk1.boxเพื่อสร้างเครื่องเสมือนใหม่และพยายามเชื่อมต่อกับ มันใช้ ssh อย่างไรก็ตาม SSH จะตัดการเชื่อมต่อทันทีโดยไม่ต้องไปถึงขั้นตอนที่มันพยายามพิสูจน์ตัวตน
ฉันเปิด VM ใน VirtualBox GUI และดูที่ไฟล์บันทึก 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 ได้ทันทีโดยไม่ต้องกำหนดค่าเพิ่มเติมใด ๆ
ฉันอาจต้องสร้าง Virtual Machine จำนวนมากในอนาคตอันใกล้และฉันหวังว่าฉันจะใช้ Vagrant เพื่อทำมัน แต่ฉันไม่สามารถทำได้ถ้าฉันจะต้องแก้ไข SSH ด้วยตนเองในแต่ละอัน
ไม่มีใครรู้ว่าทำไมสิ่งนี้ถึงเกิดขึ้นและสิ่งที่สามารถแก้ไขได้? ฉันควรรายงานว่าเป็นข้อบกพร่องหรือไม่
test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
ใช้หรือssh-keygen
เพื่อสร้างกุญแจ
test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
ใน/etc/rc.local
สคริปต์
vagrant
บนโฮสต์หรือไม่ ลองเปิด debug debug แล้วดูว่ามีความสุขอย่างไรvagrant ssh
ใช้ keypair ที่ไม่ปลอดภัยของคนจรจัดสำหรับการรับรองความถูกต้องของคีย์ผับ