SSH на боксерскую коробку с разным именем
Вместо того, чтобы использовать мою виртуальную машину Vagrant с "бродячим" именем пользователя и паролем, я бы хотел использовать кевина/кевина.
Я изменил свой Vagrantfile
, чтобы включить:
config.ssh.username = "kevin"
Тогда я побежал vagrant reload
.
Появился следующий вывод:
[default] Waiting for machine to boot. This may take a few minutes...
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period. This can
mean a number of things.
Тем не менее, я все еще мог сфотографировать на своем брандмауэре, используя vagrant/vagrant
, но я не смог бы ssh на поле с именем пользователя и паролем kevin/kevin или kevin/vagrant.
Обратите внимание, что я также пробовал этот ответ (qaru.site/info/39190/...), но я мог только ssh на поле с именем пользователя vagrant
, а не kevin
(хотя он указан в Vagrantfile
).
Как я могу настроить свой Vagrantfile, чтобы я мог ssh использовать имя пользователя kevin
?
Ответы
Ответ 1
Вы можете использовать ssh в поле, используя vagrant
, но НЕ kevin
, что ожидалось.
В большинстве базовых блоков Vagrant есть только 2 пользователя с доступом SSH, root
и vagrant
. Они оба используют vagrant
в качестве пароля, кроме того, vagrant
настроен для проверки подлинности с открытым ключом, используя необязательную (почему? См. неаккуратную по умолчанию?) пару ключей представленный в проекте Vagrant на GitHub.
Чтобы войти в систему как kevin
, вам нужно будет ssh в поле и сначала создать пользователя (useradd -m -s /bin/bash -U kevin
), настроить аутентификацию открытого ключа (многие способы, например ssh-copy-id
, я оставлю это вам.)
Вы должны быть в состоянии ssh в поле после создания пользователя, используя vagrant ssh
, если вы правильно установите config.ssh.username
в Vagrantfile
.
Конечно, вы можете вручную ввести ssh в поле (предположим, что NAT используется)
ssh -p 2222 [email protected]
или (в Linux)
ssh -p 2222 -i /opt/vagrant/embedded/gems/gems/vagrant-1.5.1/keys/vagrant.pub [email protected]
Ответ 2
Создайте бродячий файл, как показано ниже. Обратите внимание, что мы загружаем бродячего пользователя, чтобы немедленно перейти к создаваемому пользователю "kevin".
bootstrap = <<SCRIPT
useradd -m kevin --groups sudo
su -c "printf 'cd /home/kevin\nsudo su kevin' >> .bash_profile" -s /bin/sh vagrant
SCRIPT
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-16.04"
config.vm.host_name = "kevin"
config.vm.provision "shell", inline: "#{bootstrap}", privileged: true
end
теперь ssh в vm:
$ vagrant ssh
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-83-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
[email protected]:/home/vagrant$
Ответ 3
Немного взлома, но вы можете добавить строку sudo su - kevin
в свой .bash_profile файл и добавить kevin в файл sudoers без пароля.
Это изменит текущего пользователя на kevin при входе в систему как пользователь-бродяга из командной строки.
Преимущество такого подхода заключается в том, что NAT не нужно включать.
Ответ 4
Другое решение, добавив пользователя к Vagrant через ваше обеспечение script:
## add kevin
useradd -m -s /bin/bash -U kevin -u 666 --groups wheel
cp -pr /home/vagrant/.ssh /home/kevin/
chown -R kevin:kevin /home/kevin
echo "%kevin ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/kevin
добавьте это в свой бродячий файл:
VAGRANT_COMMAND = ARGV[0]
if VAGRANT_COMMAND == "ssh"
config.ssh.username = 'kevin'
end
Теперь Vagrant будет использовать пользователя по умолчанию vagrant
для предоставления вашей виртуальной машины, но после этого вы можете использовать простой vagrant ssh
для входа в систему как kevin
с помощью по умолчанию Vagrant ssh-key.
Таким образом, вы можете отправить свой желаемый Vagrantfile
, и пользователи просто скажут vagrant up
и kevin
автоматически будет готово к использованию.