Подтвердить что ты не робот

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?

4b9b3361

Ответ 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 автоматически будет готово к использованию.