วิธีการรับรองความถูกต้องกับ VM โดยใช้ Vagrant up


9

การพิสูจน์ตัวตนล้มเหลวระหว่าง Vagrant Up ในขณะที่ ssh vagrant และ ssh vagrant @ localhost -p2222 ทำงาน

ฉันต้องการรันเชลล์สคริปต์โดยใช้ Vagrant ตอนบูต Vagrant ไม่สามารถตรวจสอบสิทธิ์ได้ในขณะที่ VM เริ่มใช้งานvagrant up:

c:\temp\helloworld>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'helloworld'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: helloworld_default_1398419922203_60603
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Error: Connection timeout. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    ...

หลังจากดำเนินการCTRL + Cแล้วเป็นไปได้ที่จะรับรองความถูกต้องกับ VM โดยใช้vagrant sshและssh vagrant@localhost -p2222

ไฟล์ Vagrant

ฉันใช้ Vagrantfile เริ่มต้นและฉันเปลี่ยนชื่อโฮสต์เท่านั้น:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "helloworld"
  ...

เวอร์ชันคนพเนจร

c:\temp\helloworld>vagrant --version
Vagrant 1.5.1

คำถาม

จะรับรองความถูกต้องของ VM ได้vagrant upอย่างไร?

คำตอบ:


6

ปัญหานี้เกิดขึ้นเนื่องจากไม่มีรหัสสาธารณะอยู่ในกล่อง Vagrant หนึ่งในสองตัวเลือกต่อไปนี้สามารถแก้ไขปัญหาได้

ตัวเลือกแรกคือการสร้างกล่อง Vagrant ใหม่โดยใช้ Packer เพิ่มข้อมูลโค้ดต่อไปนี้ลงในไฟล์ json และสร้างช่อง Vagrant

"provisioners": [{
    "type": "shell",
    "scripts": [
      "scripts/vagrant.sh"
    ]
}]

เนื้อหาของสคริปต์คนจรจัดนี้เป็นดังนี้:

#!/bin/bash
yum install wget -y

mkdir /home/vagrant/.ssh
wget --no-check-certificate \
    'https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub' \
    -O /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh
chmod -R go-rwsx /home/vagrant/.ssh

ตัวเลือกที่สองคือการ repackage ( vagrant package) กล่อง Vagrant เมื่อคำสั่งต่อไปนี้ที่ระบุที่นี่ได้รับการเรียกใช้:

mkdir -p /home/vagrant/.ssh
wget --no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
chmod 0700 /home/vagrant/.ssh
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh

สิ่งนี้ได้ผลสำหรับฉัน! สำหรับผู้ที่สงสัยสิ่งนี้ทำให้ Vagrant สร้างรหัสความปลอดภัยใหม่แทนที่จะใช้รหัสที่ไม่ถูกต้องแบบเก่า
Nebojsac

5

ก่อนอื่นให้ลอง:เพื่อดูว่าคีย์ส่วนตัวคนเร่ร่อนอะไรในเครื่องคุณ

$ vagrant ssh-config

ตัวอย่าง:

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/konst/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

http://docs.vagrantup.com/v2/cli/ssh_config.html

ขั้นที่สองทำ: เปลี่ยนเนื้อหาของไฟล์insecure_private_keyด้วยเนื้อหาของไพรเวตคีย์ของระบบของคุณเอง


1

ฉันก็ไม่สามารถเกิน:

เริ่มต้น: วิธีการรับรองความถูกต้อง SSH: กุญแจส่วนตัว

เมื่อฉันใช้ VirtualBox GUI มันบอกฉันว่ามีตัวประมวลผลระบบปฏิบัติการไม่ตรงกัน

เพื่อให้คนจรจัดเดินหน้าต่อไปได้อีกในการตั้งค่า BIOS ฉันต้องตอบโต้โดยอัตโนมัติ:

ปิดใช้งาน: การจำลองเสมือน

เปิดใช้งาน: VT-X

ลองสลับการตั้งค่าเหล่านี้ใน BIOS ของคุณ


การเปิดใช้งานการจำลองเสมือนจาก BIOS แก้ไขปัญหาของฉันเกี่ยวกับ "Vagrant SSH"
Firoz Sabaliya

0

สคริปต์จำนวนมากที่ฉันเห็นใช้เพื่อดึงกุญแจสาธารณะ:

curl -L https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -o /home/vagrant/.ssh/authorized_keys

ปัญหาที่ผมเคยเห็นก็คือว่าใบรับรอง SSL GitHub สำหรับไม่www.github.com raw.github.comดังนั้นคุณจะได้รับ400ข้อผิดพลาด คุณสามารถตรวจสอบสิ่งนี้ได้โดยดูที่เนื้อหาของ/home/vagrant/.ssh/authorized_keysไฟล์

ลองใช้-kตัวเลือกเพื่อเพิกเฉยต่อการตรวจสอบใบรับรอง SSL:

curl -L -k https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -o /home/vagrant/.ssh/authorized_keys

0

ตรวจสอบให้แน่ใจว่า VM ของคุณมีการเข้าถึงเครือข่าย ในกรณีที่คุณใช้ Virtual Box รับการตั้งค่าเครื่องแท็บเครือข่ายและตรวจสอบให้แน่ใจว่าได้เชื่อมต่อสายเคเบิลแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.