connexion vagrant en tant que root par défaut


92

Problème: fréquemment, la première commande que je tape dans mes boîtes est su -.

Question: comment vagrant sshutiliser l'utilisateur root par défaut?

Version: vagabond 1.6.5


Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble hors sujet car elle ne concerne ni la programmation ni le développement. Consultez la rubrique Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Super User ou Unix & Linux Stack Exchange serait un meilleur endroit pour demander. Voir également Où puis-je publier des questions sur Dev Ops?
jww

Réponses:


141

C'est utile:

sudo passwd root

pour tous ceux qui ont été surpris par la nécessité de définir d'abord un mot de passe root dans vagrant


1
Sauvé ma vie. Savez-vous si cela a des répercussions sur la façon dont les vagabonds agissent?
Matt

1
La leçon ici est que si vous créez une boîte de base, suivez les conventions suggérées par Hashicorp et définissez votre mot de passe racine sur «vagrant». voir docs.vagrantup.com/v2/boxes/base.html
Mike D

Y a-t-il des problèmes de sécurité potentiels avec un serveur qui a un mot de passe root très facile à deviner sur votre ordinateur personnel? J'imagine que les paramètres réseau aident à cela, mais je me demande.
Nathan Basanese

1
Merci pour l'indice. Il s'avère que les boîtes vagabondes d'Ubuntu définissent un mot de passe aléatoire pour l'utilisateur root (voir groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Il faut donc toujours définir d'abord un mot de passe root.
asmaier

Merci,
j'avais

110

Solution:
ajoutez les éléments suivants à votre Vagrantfile:

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

Lorsque vous vagrant sshvous connectez désormais, vous devez rootvous attendre à ce qui suit:

==> 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!

Mise à jour du 23 juin 2015: cela fonctionne également pour la version 1.7.2. La sécurité des clés s'est améliorée depuis la version 1.7.0; cette technique remplace la méthode précédente qui utilise une clé privée connue. Cette solution n'est pas destinée à être utilisée pour une boîte accessible au public sans mesures de sécurité appropriées avant la publication.

Référence:


Pourrait-il y avoir une raison d'obtenir l'invite de mot de passe lors de l'exécution vagrant ssh? (après avoir apporté les modifications décrites) Vagrant version 1.7.2
roign

@RobertIgnat peut-être que vous devez définir votre mot de passe racine pour correspondre à ce que vous avez dans votre config.ssh.passwordvaleur. vous devriez pouvoir commenter les config.ssh.*lignes nouvellement ajoutées pour accéder à votre boîte, puis changer le mot de passe root via sudo passwd root.
Mike D

11
Pour une machine qui a déjà été approvisionnée, faites ce qui précède et faites-lemkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
ne fonctionne pas pour une nouvelle installation de Vagrant, probablement parce que quand on utilise par exemple ubuntu / xenial, on DOIT utiliser les identifiants utilisateur créés ici. (voir aussi stackoverflow.com/a/40478402/605463 )
axd

1
Pour toute personne utilisant centos/7: Cette boîte définit un mot de passe root aléatoire; on peut vagrant sshet ensuite sudo surooter, mais (d'après ce que je peux dire) les paramètres de configuration ne fonctionnent pas sur une nouvelle vagrant uputilisant cette VM.
mhulse

35

Cela fonctionne si vous êtes sur ubuntu / trusty64 box:

vagrant ssh

Une fois que vous êtes dans la boîte ubuntu:

sudo su

Vous êtes maintenant utilisateur root. Vous pouvez mettre à jour le mot de passe root comme indiqué ci-dessous:

sudo -i
passwd

Modifiez maintenant la ligne ci-dessous dans le fichier /etc/ssh/sshd_config

PermitRootLogin yes

De plus, il est pratique de créer votre propre nom d'utilisateur alternatif:

adduser johndoe

Attendez qu'il vous demande le mot de passe.


12

Si Vagrantfilecomme ci-dessous:

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

Mais vagrant vous demande toujours le mot de passe root, probablement la boîte de base que vous avez utilisée n'est pas configurée pour autoriser la connexion root.


Par exemple, la boîte de ubuntu14.04 ne contiendraient pas offical PermitRootLogin yesdans /etc/ssh/sshd_config.

Donc si vous voulez qu'une box puisse vous connecter en tant que root par défaut (uniquement Vagrantfile, plus de travail), vous devez:

  1. Configurer une VM par nom d'utilisateur vagrant(quel que soit le nom sauf root)

  2. Connectez-vous et modifiez le fichier de configuration sshd.

    ubuntu: modifier /etc/ssh/sshd_config, définir PermitRootLogin yes

    autres: ....

    (J'utilise uniquement ubuntu, n'hésitez pas à ajouter une solution de contournement d'autres plates-formes)

  3. Construisez une nouvelle boîte de base:

    vagrant package --base your-vm-name

    cela crée un fichier package.box

  4. Ajoutez cette boîte de base à vagrant:

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

    Ensuite, vous devez utiliser cette boîte de base pour créer des vm qui permettent la connexion automatique en tant que root.

  5. Détruire la VM d'origine par vagrant destroy

  6. Modifiez l'original Vagrantfile, changez le nom de la boîte ubuntu-rootet le nom d'utilisateur en root, puis vagrant upcréez-en un nouveau.

Cela m'a pris du temps à comprendre, c'est trop compliqué à mon avis. J'espère que le vagabond améliorerait cela.


10

N'oubliez pas que root est autorisé à se connecter avant !!!

Placez le code de configuration ci-dessous dans le /etc/ssh/sshd_configfichier.

PermitRootLogin yes

Bienvenue à SO. Veuillez ajouter suffisamment de détails et de contexte aux réponses. Surtout lorsque vous répondez à une vieille question avec de bonnes réponses
Jayan

c'était plus utile pour moi que la solution principale. ssh ne vous permet pas de vous connecter en tant que root par défaut.
bmbigbang

2

Remarque: n'utilisez cette méthode que pour le développement local, elle n'est pas sécurisée . Vous pouvez configurer le mot de passe et la configuration ssh lors de l'approvisionnement de la boîte. Par exemple, avec debian/stretch64box, voici mon script de mise à disposition:

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

Cela définira le mot de passe root sur vagrantet autorisera la connexion root avec un mot de passe. Si vous utilisez private_networksay with ip address, 192.168.10.37vous pouvez ssh avecssh root@192.168.10.37

Vous devrez peut-être modifier cela echoet les sedcommandes en fonction du sshd_configfichier par défaut .


1

L'ajout de cela a Vagrantfilefonctionné pour moi. Ces lignes sont l'équivalent de votre saisie à sudo su -chaque fois que vous vous connectez. Veuillez noter que cela nécessite le réapprovisionnement de la VM.

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

Merci pour votre solution très simple! echo "sudo -s" >> .bashrc serait mieux.
Honiix

1

Je sais que c'est une vieille question, mais en regardant la question d'origine, il semble que l'utilisateur voulait simplement exécuter une commande en tant que root, c'est ce que je dois faire lorsque je cherchais une réponse et que je suis tombé sur la question.

Donc, celui-ci vaut la peine d'être connu à mon avis:

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

vagrantLe mot de passe est-il repris dans la commande sudo, car comme nous le savons tous, le compte vagrant a les privilèges sudo et lorsque vous sudo, vous devez spécifier le mot de passe du compte utilisateur, pas root..et bien sûr, par défaut, le Le mot de passe de l'utilisateur vagabond est vagrant!

Par défaut, vous avez besoin des privilèges root pour arrêter, donc je suppose que faire un arrêt est un bon test.

De toute évidence, vous n'avez pas besoin de spécifier un nom de serveur s'il n'y en a qu'un pour cet environnement vagabond. De plus, nous parlons de machine virtuelle vagabonde locale à l'hôte, donc il n'y a pas vraiment de problème de sécurité que je puisse voir.

J'espère que cela t'aides.


0

J'ai eu quelques problèmes avec l'approvisionnement en essayant de me connecter en tant que root, même avec PermitRootLogin yes. Je l'ai fait pour que seule la vagrant sshcommande soit affectée:

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

-8
vagrant destroy
vagrant up

Veuillez ajouter ceci au fichier vagrant:

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

Cela ne fait rien puisque l'utilisateur par défaut est déjà vagabond .
Jamal

au lieu d'utiliser config.ssh.username = 'vagrant' .... utilisez config.ssh.username = 'root' .... cela vous aidera.
Jimmy MG Lim
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.