бродячий логин как root по умолчанию


94

Проблема: часто первая команда, которую я ввожу в свои ящики, - это su -.

Вопрос: как vagrant sshиспользовать по умолчанию пользователя root?

Версия: vagrant 1.6.5


Stack Overflow - это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. Какие темы можно задать здесь, в Справочном центре. Возможно, лучше спросить Super User или Unix & Linux Stack Exchange . Также см. Где я могу задать вопросы о Dev Ops?
jww

Ответы:


146

Это полезно:

sudo passwd root

для всех, кого поймали на необходимости сначала установить пароль root в бродяге


1
Спас мою жизнь. Вы знаете, влияет ли это на поведение бродяг?
Мэтт

1
Урок здесь в том, что если вы создаете базовый блок, следуйте соглашениям, предложенным Hashicorp, и установите для корневого пароля значение «vagrant». см. docs.vagrantup.com/v2/boxes/base.html
Майк Д.

Однако есть ли какие-либо потенциальные проблемы с безопасностью на сервере, на котором на вашем персональном компьютере находится действительно легко угадываемый пароль root? Я полагаю, что сетевые настройки помогают в этом, но мне интересно.
Натан Басанезе,

1
Спасибо за подсказку. Оказывается, бродячие ящики Ubuntu устанавливают случайный пароль для пользователя root (см. Groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Поэтому всегда нужно сначала установить пароль root.
asmaier 03

Спасибо, это действительно было нужно
ka_lin

110

Решение:
добавьте в свой 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
roign

@RobertIgnat, возможно, вам нужно установить корневой пароль в соответствии с тем, что у вас есть в вашем config.ssh.passwordзначении. вы должны иметь возможность закомментировать новые добавленные config.ssh.*строки для доступа к вашему ящику, а затем изменить пароль root через sudo passwd root.
Mike D

11
Для машины, которая уже была подготовлена, проделайте то же самое и сделайтеmkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Фелипе Альварес

2
не работает для новой установки Vagrant, вероятно, потому что, когда кто-то использует, например, ubuntu / xenial, нужно использовать запеченные там логины пользователей. (см. также stackoverflow.com/a/40478402/605463 )
axd 03

1
Для всех, кто использует centos/7: Это поле устанавливает случайный пароль root; можно, vagrant sshа затем sudo suполучить root-права, но (насколько я могу судить) настройки конфигурации не работают на свежей машине vagrant upс использованием этой виртуальной машины.
mhulse

37

Это работает, если вы используете ящик ubuntu / trusty64:

vagrant ssh

Как только вы окажетесь в поле ubuntu:

sudo su

Теперь вы пользователь root. Вы можете обновить пароль root, как показано ниже:

sudo -i
passwd

Теперь отредактируйте следующую строку в файле /etc/ssh/sshd_config

PermitRootLogin yes

Также удобно создать собственное альтернативное имя пользователя:

adduser johndoe

Подождите, пока он не запросит пароль.


12

Если, 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, больше никакой работы), вам необходимо:

  1. Настройте виртуальную машину по имени пользователя vagrant(любое имя, кроме root)

  2. Войдите и отредактируйте файл конфигурации sshd.

    ubuntu: редактировать /etc/ssh/sshd_config, устанавливать PermitRootLogin yes

    другие: ....

    (Я использую только ubuntu, не стесняйтесь добавлять обходные пути для других платформ)

  3. Создайте новую базовую коробку:

    vagrant package --base your-vm-name
    

    это создать файл package.box

  4. Добавьте эту базовую коробку в бродягу:

    vagrant box add ubuntu-root file:///somepath/package.box
    

    затем вам нужно использовать этот базовый блок для создания виртуальной машины, которая позволяет автоматически входить в систему как root.

  5. Уничтожить оригинал vm - пользователем vagrant destroy

  6. Отредактируйте оригинал Vagrantfile, измените имя ящика на ubuntu-rootи имя пользователя на root, а затем vagrant upсоздайте новый.

Мне потребовалось время, чтобы разобраться, на мой взгляд, это слишком сложно. Надеюсь, что бродяга это исправит.


10

Не забывайте, что root может входить в систему раньше !!!

Поместите код конфигурации ниже в /etc/ssh/sshd_configфайл.

PermitRootLogin yes

Добро пожаловать в SO. Пожалуйста, добавьте в ответы достаточно деталей и контекста. Особенно, когда вы отвечаете на старый вопрос хорошими ответами
Джаян

это было для меня более полезным, чем основное решение. По умолчанию ssh не позволяет входить в систему как root.
bmbigbang

2

Добавление этого в Vagrantfileсработало для меня. Эти строки эквивалентны тому, что вы вводите sudo su -каждый раз при входе в систему. Обратите внимание, что это требует повторной инициализации виртуальной машины.

config.vm.provision "shell", inline: <<-SHELL
    echo "sudo su -" >> .bashrc
SHELL

1
Спасибо за очень простое решение! echo "sudo -s" >> .bashrc было бы лучше.
Honiix

@Honiix Ты имеешь в виду -i? 😅
Томас Готвиг

@ThomasGotwig, вы правы, `-i` встречается чаще, чем `-s`, оба работают в зависимости от того, что вы хотите сделать. Но я хотел сказать, что лучше избегать объединения sudo и su.
Honiix

2

Примечание. Используйте этот метод только для локальной разработки, это небезопасно . Вы можете установить пароль и конфигурацию 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_networksay с IP-адресом, 192.168.10.37вы можете использовать ssh сssh root@192.168.10.37

Возможно, вам придется изменить это echoи sedкоманды в зависимости от sshd_configфайла по умолчанию .


1

Я знаю, что это старый вопрос, но, глядя на исходный вопрос, похоже, что пользователь просто хотел запустить команду как root, это то, что мне нужно сделать, когда я искал ответ и наткнулся на вопрос.

На мой взгляд, это стоит знать:

vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"

vagrant- это пароль, отображаемый в команде sudo, потому что, как мы все знаем, учетная запись vagrant имеет привилегии sudo, и когда вы используете sudo, вам нужно указать пароль учетной записи пользователя, а не root ... и, конечно же, по умолчанию пароль бродячего пользователя vagrant!

По умолчанию для завершения работы вам нужны права root, поэтому я думаю, что завершение работы - хороший тест.

Очевидно, что вам не нужно указывать имя сервера, если оно только одно для этой бродячей среды. Кроме того, мы говорим о локальной бродячей виртуальной машине для хоста, поэтому я не вижу никаких проблем с безопасностью.

Надеюсь это поможет.


0

У меня были проблемы с подготовкой при попытке войти в систему как root, даже с PermitRootLogin yes. Я сделал так, что vagrant sshвлияет только на команду:

# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
  config.ssh.username = 'root'
end

-8
vagrant destroy
vagrant up

Пожалуйста, добавьте это в бродячий файл:

config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Это ничего не делает, поскольку пользователь по умолчанию уже является бродягой .
Джамал

вместо использования config.ssh.username = 'vagrant' .... используйте config.ssh.username = 'root' .... это поможет.
Джимми М.Г. Лим
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.