web-dev-qa-db-ja.com

Vagrant upを使用してVMに認証する方法は?

Vagrant Up中の認証の失敗、Vagrant sshおよびssh vagrant @ localhost -p2222は機能します

ブート時にVagrantを使用してシェルスクリプトを実行したいと思います。 VMがvagrant upを使用して開始されている間、Vagrantは認証できません:

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を実行した後、vagrant sshおよびssh vagrant@localhost -p2222を使用してVMに対して認証できます。

Vagrant file

デフォルトの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を認証する方法は?

9
030

この問題は、Vagrantボックスに公開鍵がないために発生しました。次の2つのオプションのいずれかで問題が解決します。

最初のオプションは、Packerを使用して新しいVagrantボックスを作成することです。 以下のスニペット をjsonファイルに追加し、Vagrantボックスをビルドします。

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

この vagrant script の内容は次のとおりです。

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

2番目のオプションは、(vagrant package)次のコマンドを指定すると、Vagrantボックス here が実行されます。

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
6
030

最初に、次のことを試してください:マシン構成内のどのvagrant private keyを確認します

$ 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

2番目に、次の操作を行います:ファイルの内容を変更insecure_private_keyを独自のシステムの内容秘密鍵

5
shilovk

私も超えられませんでした:

デフォルト:SSH認証方法:秘密鍵

VirtualBox GUIを使用すると、OSプロセッサーの不一致があることがわかりました。

さらに進んで前進するために、BIOS設定で直感的に対抗する必要がありました。

無効化:仮想化

有効化:VT-X

BIOSでこれらの設定を切り替えてみてください。

1
Onshop

VMがネットワークにアクセスできることを確認してください。VirtualBoxを使用している場合は、マシン設定の[ネットワーク]タブにアクセスし、[ケーブル接続]がオンになっていることを確認してください。

0
paulalexandru

私が目にするスクリプトの多くは、これを使用して公開鍵を取得します。

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

私が見た問題は、github SSL証明書が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
cjcdoomed