Вероятно, глупый вопрос, но
Я использовал поле trusty64 раньше с помощью vagrant и пытался использовать xenial64, но он не принимает обычного пользователя: бродячий пароль: бродячий логин?
Я ударил головой о стену на полдня вчера, пока не понял, что запускаю старую версию Virtualbox (5.0.x) и Vagrant (1.8.0)
Обновлен до VirtualBox 5.1. x и Vagrant 1.8.7 и получили лучшие результаты
В основном изображения ubuntu/xenial32 и ubuntu/xenial64 ошибочны, поскольку они не поставляются с пользователем vagrant из коробки.
Это противоречит спецификациям бродяг
. Я закончил использование v0rtex/xenial64, как рекомендовано в спецификациях . Не знаю, почему canonical не фиксирует этот
. Мой бродячий файл выглядит следующим образом
# -*- 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|
config.vm.box = "v0rtex/xenial64"
config.vm.network :private_network, ip: "10.10.10.10"
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.vm.provider :virtualbox do |vb|
vb.name = "supercool"
vb.customize ["modifyvm", :id, "--memory", "768"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
end
Если вы все еще хотите использовать предоставленные canonical изображения, это возможно, используя следующий подход
# -*- 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|
config.vm.box = "ubuntu/xenial64"
config.vm.network :private_network, ip: "10.10.10.10"
config.ssh.insert_key = true
config.ssh.forward_agent = true
config.vm.provider :virtualbox do |vb|
vb.name = "supercool"
vb.customize ["modifyvm", :id, "--memory", "768"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
end
Если вы сделаете это, папка /vagrant будет принадлежать ubuntu:ubuntu вместо vagrant:vagrant. Если у вас есть скрипты, полагающиеся на пользователя vagrant, чтобы они были там, они сломали
Последнее исправлено (2018/01/13): https://bugs.launchpad.net/cloud-images/+bug/1569237/comments/111
Вы можете захотеть запустите vagrant box update, а затем vagrant destroy.
Способ установки ожидает и инициирует смену пароля. Пример ниже устанавливает пароль ubuntu для пользователя ubuntu.
Vagrant.configure("2") do |config|
apt-get install -y expect
echo '#!/usr/bin/expect
set timeout 20
spawn sudo passwd ubuntu
expect "Enter new UNIX password:" {send "ubuntu\\r"}
expect "Retype new UNIX password:" {send "ubuntu\\r"}
interact' > change_ubuntu_password
chmod +x change_ubuntu_password
./change_ubuntu_password
end
Новое ubuntu/xenial64 изображение не содержит имени пользователя и пароля по умолчанию. Однако вы можете использовать ssh-ключ, сгенерированный в вашей бродящей папке.
Допустим, ваш Vagrantfile находится в /vagrant/vm01/Vagrantfile, ssh-ключ будет находиться в /vagrant/vm01/.vagrant/machines/..../private_key
You можете войти в ваш бродячий vm, используя этот private_key. Если гостевая машина запрашивает ключевую фразу ключа, просто нажмите ENTER (указав пустую кодовую фразу). Например, на моем Mac:
ssh -i /vagrant/vm01/.vagrant/..../private_key <your vm ip> <your vm port>
Если вы все еще хотите войти в систему с использованием имени пользователя и пароля, после входа в систему с помощью private_key вы можете добавить своего собственного пользователя для входа в систему позже: [!d3 ]
# create a user for log in
sudo useradd yourusername
# specify a password
sudo passwd yourusername
# then type your password when prompted
# add the user to sudo group
sudo adduser yourusername sudo
# create a home folder for your user
sudo mkdir /home/yourusername
# add a shell command for your user (normally /bin/bash)
sudo vim /etc/passwd
# find yourusername line, and add /bin/bash to the end.
# the end result would look like this:
yourusername:x:1020:1021::/home/yourusername:/bin/bash
Теперь вы можете использовать ssh с использованием нового имени пользователя и пароля.
Вы можете вывести правильную конфигурацию OpenSSH для подключения к машине, набрав vagrant ssh-config из вашей папки Vagrantfile. На выходе будет показано, что аутентификация пароля отключена, однако вы можете указать файл закрытого ключа:
Host default
HostName 127.0.0.1
User ubuntu
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /path/to/project/folder/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
Теперь вы можете:
ssh -i /path/to/project/folder/.vagrant/machines/default/virtualbox/private_key ubuntu@machine-ip
Если вы не заинтересованы в поле ubuntu/xenial64, но в любом другом ящике 16.04 LTS, я использовал bento, который работает с обычным vagrant именем пользователя и паролем:
config.vm.box = 'bento/ubuntu-16.04'
config.vm.box_version = "201708.22.0"