Làm cách nào để xác thực VM với Vagrant?


9

Lỗi xác thực trong Vagrant Up, trong khi ssh và ssh vagrant @ localhost -p2222 hoạt động

Tôi muốn thực thi một kịch bản shell bằng Vagrant khi khởi động. Vagrant không thể xác thực, trong khi VM đã được bắt đầu sử dụng 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...
    ...

Sau khi thực hiện CTRL + C, có thể xác thực với VM bằng cách sử dụng vagrant sshssh vagrant@localhost -p2222

Hồ sơ

Tôi sử dụng Vagrantfile mặc định và tôi chỉ thay đổi tên máy chủ:

# -*- 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"
  ...

Phiên bản âm đạo

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

Câu hỏi

Làm thế nào để xác thực với VM bằng cách sử dụng vagrant up?

Câu trả lời:


6

Vấn đề được gây ra bởi vì không có khóa công khai nào nằm trong hộp Vagrant. Một trong hai tùy chọn sau đây giải quyết vấn đề.

Tùy chọn đầu tiên là tạo một hộp Vagrant mới bằng Packer. Thêm đoạn mã sau vào tệp json và xây dựng hộp Vagrant.

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

Nội dung của kịch bản mơ hồ này như sau:

#!/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

Tùy chọn thứ hai là đóng gói lại ( vagrant package) hộp Vagrant sau khi các lệnh sau được chỉ định ở đây đã được chạy:

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

Điều này làm việc cho tôi! Đối với những người thắc mắc, điều này làm cho Vagrant tạo ra một khóa bảo mật mới, thay vì sử dụng khóa cũ không hợp lệ (nếu nó thậm chí còn có một khóa).
Nebojsac

5

Trước tiên, hãy thử: để xem khóa riêng nào mơ hồ trong cấu hình máy của bạn

$ vagrant ssh-config

Thí dụ:

$ 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

Thứ hai, làm: Thay đổi nội dung của tập tin insecure_private_key với nội dung của hệ thống của riêng bạn private key


1

Tôi cũng không thể vượt qua:

mặc định: phương thức SSH auth: khóa riêng

Khi tôi sử dụng GUI VirtualBox, nó nói với tôi rằng có một bộ xử lý hệ điều hành không khớp.

Để có được sự tiến bộ hơn nữa, trong cài đặt BIOS, tôi đã phải phản trực giác:

Vô hiệu hóa: Ảo hóa

Kích hoạt: VT-X

Hãy thử bật các cài đặt này trong BIOS của bạn.


Việc kích hoạt ảo hóa từ BIOS đã giải quyết vấn đề của tôi liên quan đến "Vagrant SSH"
Firoz Sabaliya

0

Rất nhiều tập lệnh tôi thấy sử dụng điều này để kéo khóa chung:

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

Vấn đề tôi thấy là chứng chỉ SSL github dành cho www.github.comchứ không phải raw.github.com. Do đó, bạn cuối cùng nhận được một 400lỗi. Bạn có thể xác minh điều này bằng cách xem nội dung của /home/vagrant/.ssh/authorized_keystệp.

Hãy thử sử dụng -ktùy chọn để bỏ qua kiểm tra chứng chỉ SSL:

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

0

Đảm bảo rằng VM của bạn có quyền truy cập mạng. Trong trường hợp bạn sử dụng Hộp ảo, hãy vào cài đặt máy, tab mạng và đảm bảo Kiểm tra kết nối cáp của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.