Проблема: часто первая команда, которую я ввожу в свои ящики, - это su -
.
Вопрос: как vagrant ssh
использовать по умолчанию пользователя root?
Версия: vagrant 1.6.5
Проблема: часто первая команда, которую я ввожу в свои ящики, - это su -
.
Вопрос: как vagrant ssh
использовать по умолчанию пользователя root?
Версия: vagrant 1.6.5
Ответы:
Это полезно:
sudo passwd root
для всех, кого поймали на необходимости сначала установить пароль root в бродяге
Решение:
добавьте в свой Vagrantfile
:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
Когда вы в vagrant ssh
дальнейшем, вы будете войти как root
и следует ожидать следующее:
==> mybox: Waiting for machine to boot. This may take a few minutes...
mybox: SSH address: 127.0.0.1:2222
mybox: SSH username: root
mybox: SSH auth method: password
mybox: Warning: Connection timeout. Retrying...
mybox: Warning: Remote connection disconnect. Retrying...
==> mybox: Inserting Vagrant public key within guest...
==> mybox: Key inserted! Disconnecting and reconnecting using new SSH key...
==> mybox: Machine booted and ready!
Обновление от 23 июня 2015 г. Это работает и для версии 1.7.2. Безопасность ключей улучшена с версии 1.7.0; этот метод отменяет предыдущий метод, который использует известный закрытый ключ. Это решение не предназначено для использования с общедоступным ящиком без надлежащих мер безопасности, предпринятых перед публикацией.
Справка:
vagrant ssh
? (после внесения описанных изменений) Vagrant version 1.7.2
config.ssh.password
значении. вы должны иметь возможность закомментировать новые добавленные config.ssh.*
строки для доступа к вашему ящику, а затем изменить пароль root через sudo passwd root
.
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
: Это поле устанавливает случайный пароль root; можно, vagrant ssh
а затем sudo su
получить root-права, но (насколько я могу судить) настройки конфигурации не работают на свежей машине vagrant up
с использованием этой виртуальной машины.
Это работает, если вы используете ящик ubuntu / trusty64:
vagrant ssh
Как только вы окажетесь в поле ubuntu:
sudo su
Теперь вы пользователь root. Вы можете обновить пароль root, как показано ниже:
sudo -i
passwd
Теперь отредактируйте следующую строку в файле /etc/ssh/sshd_config
PermitRootLogin yes
Также удобно создать собственное альтернативное имя пользователя:
adduser johndoe
Подождите, пока он не запросит пароль.
Если, Vagrantfile
как показано ниже:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
Но бродяга по-прежнему спрашивает у вас пароль root, скорее всего, используемый вами базовый блок не настроен на разрешение входа в систему root.
Например, Offical коробка ubuntu14.04 не установлен PermitRootLogin yes
в /etc/ssh/sshd_config
.
Итак, если вы хотите, чтобы ящик мог входить в систему как root по умолчанию (только Vagrantfile, больше никакой работы), вам необходимо:
Настройте виртуальную машину по имени пользователя vagrant
(любое имя, кроме root)
Войдите и отредактируйте файл конфигурации sshd.
ubuntu: редактировать /etc/ssh/sshd_config
, устанавливать PermitRootLogin yes
другие: ....
(Я использую только ubuntu, не стесняйтесь добавлять обходные пути для других платформ)
Создайте новую базовую коробку:
vagrant package --base your-vm-name
это создать файл package.box
Добавьте эту базовую коробку в бродягу:
vagrant box add ubuntu-root file:///somepath/package.box
затем вам нужно использовать этот базовый блок для создания виртуальной машины, которая позволяет автоматически входить в систему как root.
Уничтожить оригинал vm - пользователем vagrant destroy
Отредактируйте оригинал Vagrantfile
, измените имя ящика на ubuntu-root
и имя пользователя на root
, а затем vagrant up
создайте новый.
Мне потребовалось время, чтобы разобраться, на мой взгляд, это слишком сложно. Надеюсь, что бродяга это исправит.
Не забывайте, что root может входить в систему раньше !!!
Поместите код конфигурации ниже в /etc/ssh/sshd_config
файл.
PermitRootLogin yes
Добавление этого в Vagrantfile
сработало для меня. Эти строки эквивалентны тому, что вы вводите sudo su -
каждый раз при входе в систему. Обратите внимание, что это требует повторной инициализации виртуальной машины.
config.vm.provision "shell", inline: <<-SHELL
echo "sudo su -" >> .bashrc
SHELL
-i
? 😅
Примечание. Используйте этот метод только для локальной разработки, это небезопасно . Вы можете установить пароль и конфигурацию ssh во время подготовки окна. Например, с debian/stretch64
коробкой это мой сценарий подготовки:
config.vm.provision "shell", inline: <<-SHELL
echo -e "vagrant\nvagrant" | passwd root
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -in 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
service ssh restart
SHELL
Это установит пароль root vagrant
и разрешит вход root с паролем. Если вы используете private_network
say с IP-адресом, 192.168.10.37
вы можете использовать ssh сssh root@192.168.10.37
Возможно, вам придется изменить это echo
и sed
команды в зависимости от sshd_config
файла по умолчанию .
Я знаю, что это старый вопрос, но, глядя на исходный вопрос, похоже, что пользователь просто хотел запустить команду как root, это то, что мне нужно сделать, когда я искал ответ и наткнулся на вопрос.
На мой взгляд, это стоит знать:
vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"
vagrant
- это пароль, отображаемый в команде sudo, потому что, как мы все знаем, учетная запись vagrant имеет привилегии sudo, и когда вы используете sudo, вам нужно указать пароль учетной записи пользователя, а не root ... и, конечно же, по умолчанию пароль бродячего пользователя vagrant
!
По умолчанию для завершения работы вам нужны права root, поэтому я думаю, что завершение работы - хороший тест.
Очевидно, что вам не нужно указывать имя сервера, если оно только одно для этой бродячей среды. Кроме того, мы говорим о локальной бродячей виртуальной машине для хоста, поэтому я не вижу никаких проблем с безопасностью.
Надеюсь это поможет.
vagrant destroy
vagrant up
Пожалуйста, добавьте это в бродячий файл:
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'