Bagaimana cara mengautentikasi ke VM menggunakan Vagrant up?

9

Kegagalan autentikasi selama Vagrant Up, sementara vagrant ssh dan ssh vagrant @ localhost -p2222 berfungsi

Saya ingin menjalankan skrip shell menggunakan Vagrant saat boot. Vagrant tidak dapat Mengotentikasi, sementara VM telah mulai menggunakan 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...
    ...

Setelah menjalankan CTRL + C, dimungkinkan untuk mengautentikasi ke VM menggunakan vagrant sshdanssh vagrant@localhost -p2222

File gelandangan

Saya menggunakan Vagrantfile default dan saya hanya mengubah nama host:

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

Versi gelandangan

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

Pertanyaan

Bagaimana cara mengautentikasi ke VM menggunakan vagrant up?

030
sumber

Jawaban:

6

Masalah ini disebabkan karena tidak ada kunci Publik berada di kotak Vagrant. Salah satu dari dua opsi berikut menyelesaikan masalah.

Opsi pertama adalah membuat kotak Vagrant baru menggunakan Packer. Tambahkan potongan berikut ke file json dan bangun kotak Vagrant.

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

Isi skrip gelandangan ini adalah sebagai berikut:

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

Opsi kedua adalah mengemas ulang ( vagrant package) kotak Vagrant setelah perintah berikut yang ditentukan di sini dijalankan:

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
030
sumber
Ini berhasil untuk saya! Bagi mereka yang bertanya-tanya, ini membuat Vagrant menghasilkan kunci aman baru, alih-alih menggunakan yang lama tidak valid (bahkan jika ada).
Nebojsac
5

Pertama, coba: untuk melihat apa kunci privat gelandangan di konfigurasi mesin Anda

$ vagrant ssh-config

Contoh:

$ 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

Kedua, lakukan: Ubah konten file insecure_private_key dengan konten kunci pribadi sistem Anda

shilovk
sumber
1

Saya juga tidak bisa melewati:

default: metode auth SSH: kunci pribadi

Ketika saya menggunakan GUI VirtualBox, ia mengatakan ada ketidakcocokan prosesor OS.

Untuk mendapatkan kemajuan yang lebih lanjut, dalam pengaturan BIOS saya harus kontra-intuitif:

Nonaktifkan: Virtualisasi

Aktifkan: VT-X

Coba matikan pengaturan ini di BIOS Anda.

Di toko
sumber
Mengaktifkan Virtualisasi dari BIOS menyelesaikan masalah saya terkait "Vagrant SSH"
Firoz Sabaliya
0

Banyak skrip yang saya lihat gunakan ini untuk menarik kunci publik:

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

Masalah yang saya lihat adalah bahwa github SSL cert adalah untuk www.github.com, bukan raw.github.com. Karena itu, Anda akhirnya mendapatkan 400kesalahan. Anda dapat memverifikasi ini dengan melihat isi /home/vagrant/.ssh/authorized_keysfile.

Coba gunakan -kopsi untuk mengabaikan pemeriksaan sertifikat SSL:

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

Pastikan VM Anda memiliki akses jaringan. Jika Anda menggunakan Virtual Box, masuk ke pengaturan mesin Anda, tab jaringan dan pastikan Cable Connected Anda dicentang.

paulalexandru
sumber