бродячий логін як 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
Врятував моє життя. Чи знаєте ви, чи це має якісь наслідки для того, як діє бродяга?
Matt

1
Урок тут полягає в тому, що якщо ви створюєте базовий блок, дотримуйтесь домовленостей, запропонованих Hashicorp, і встановіть для кореневого пароля значення "бродячий". див. docs.vagrantup.com/v2/boxes/base.html
Mike D

Чи існують якісь потенційні проблеми безпеки із сервером, який на вашому персональному комп’ютері лежить насправді легко вгадуваному паролі користувача? Я думаю, що мережеві налаштування допомагають у цьому, але мені цікаво.
Натан Басанес

1
Дякую за підказку. Виявляється, бродячі скриньки Ubuntu встановлюють випадковий пароль для кореневого користувача (Див. Groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Тому завжди потрібно спочатку встановити пароль користувача.
asmaier

Дякую,
мені

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 версія 1.7.2
король

@RobertIgnat Можливо, вам потрібно встановити свій root-пароль, щоб він відповідав вашому config.ssh.passwordзначенню. Ви повинні мати можливість коментувати нещодавно додані config.ssh.*рядки, щоб отримати доступ до вашого вікна, а потім змінити пароль користувача через 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

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

37

Це працює, якщо ви перебуваєте у вікні ubuntu / trusty64:

vagrant ssh

Опинившись у вікні ubuntu:

sudo su

Тепер ви користувач 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.

Отже, якщо ви хочете, щоб ящик міг увійти як кореневий за замовчуванням (лише Vagrantfile, більше не потрібно працювати), вам потрібно:

  1. Налаштування vm за іменем користувача vagrant(будь-яке ім'я, крім кореневого)

  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
    

    тоді вам потрібно використати цей базовий ящик для побудови vm, який дозволить авторизуватися як root.

  5. Знищи оригінал vm від vagrant destroy

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

Мені це зайняло деякий час, щоб зрозуміти це, на мій погляд, це занадто складно. Сподіваюся, бродяга покращить це.


10

Не забувайте, корінь дозволено корінь входити раніше !!!

Помістіть код конфігурації нижче у /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/stretch64box це мій сценарій надання:

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сказати з 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, оскільки, як ми всі знаємо, обліковий запис бродяги має привілеї 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'

Це нічого не робить, оскільки користувач за замовчуванням вже бродяга .
Jamal

замість використання config.ssh.username = 'vagrant' .... використовуйте config.ssh.username = 'root' .... це допоможе.
Jimmy MG Lim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.