Problème: fréquemment, la première commande que je tape dans mes boîtes est su -
.
Question: comment vagrant ssh
utiliser l'utilisateur root par défaut?
Version: vagabond 1.6.5
Problème: fréquemment, la première commande que je tape dans mes boîtes est su -
.
Question: comment vagrant ssh
utiliser l'utilisateur root par défaut?
Version: vagabond 1.6.5
Réponses:
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
Solution:
ajoutez les éléments suivants à votre Vagrantfile
:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
Lorsque vous vagrant ssh
vous connectez désormais, vous devez root
vous 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:
vagrant ssh
? (après avoir apporté les modifications décrites) Vagrant version 1.7.2
config.ssh.password
valeur. 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
.
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
: Cette boîte définit un mot de passe root aléatoire; on peut vagrant ssh
et ensuite sudo su
rooter, mais (d'après ce que je peux dire) les paramètres de configuration ne fonctionnent pas sur une nouvelle vagrant up
utilisant cette VM.
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.
Si Vagrantfile
comme 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 yes
dans /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:
Configurer une VM par nom d'utilisateur vagrant
(quel que soit le nom sauf root)
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)
Construisez une nouvelle boîte de base:
vagrant package --base your-vm-name
cela crée un fichier package.box
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.
Détruire la VM d'origine par vagrant destroy
Modifiez l'original Vagrantfile
, changez le nom de la boîte ubuntu-root
et le nom d'utilisateur en root
, puis vagrant up
cré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.
N'oubliez pas que root est autorisé à se connecter avant !!!
Placez le code de configuration ci-dessous dans le /etc/ssh/sshd_config
fichier.
PermitRootLogin yes
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/stretch64
box, 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 vagrant
et autorisera la connexion root avec un mot de passe. Si vous utilisez private_network
say with ip address, 192.168.10.37
vous pouvez ssh avecssh root@192.168.10.37
Vous devrez peut-être modifier cela echo
et les sed
commandes en fonction du sshd_config
fichier par défaut .
L'ajout de cela a Vagrantfile
fonctionné 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
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"
vagrant
Le 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.
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 ssh
commande soit affectée:
# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
config.ssh.username = 'root'
end
vagrant destroy
vagrant up
Veuillez ajouter ceci au fichier vagrant:
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'