Problème: fréquemment, la première commande que je tape dans mes boîtes est su -
.
Question: comment faire pour que vagrant ssh
utilise l'utilisateur root par défaut?
Version: vagrant 1.6.5
Solution:
Ajoutez ce qui suit à votre Vagrantfile
:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
Lorsque vous vagrant ssh
désormais, vous vous connecterez en tant que root
et vous devez 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: Ceci fonctionne également pour la version 1.7.2. La sécurité de la saisie s’est améliorée depuis la version 1.7.0; cette technique redéfinit 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é adéquates préalablement à la publication.
Référence:
C'est utile:
Sudo passwd root
pour tous ceux qui ont été surpris par la nécessité de définir un mot de passe root dans vagabond en premier
Cela fonctionne si vous êtes sur la boîte ubuntu/trusty64:
vagrant ssh
Une fois dans la boîte Ubuntu:
Sudo su
Maintenant vous êtes utilisateur root. Vous pouvez mettre à jour le mot de passe root comme indiqué ci-dessous:
Sudo -i
passwd
Maintenant, éditez 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 que le mot de passe soit demandé.
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 base que vous avez utilisée n’a pas été configurée pour autoriser la connexion root.
Par exemple, la zone officielle ubuntu14.04 ne définit pas PermitRootLogin yes
dans /etc/ssh/sshd_config
.
Donc, si vous voulez qu'une boîte puisse se connecter en tant que racine par défaut (uniquement Vagrantfile, plus de travail), vous devez:
Configurer une machine virtuelle par nom d'utilisateur vagrant
(quel que soit le nom mais la racine)
Connectez-vous et éditez le fichier de configuration sshd.
ubuntu: edit /etc/ssh/sshd_config
, set PermitRootLogin yes
autres: ....
(J'utilise uniquement Ubuntu, n'hésitez pas à ajouter la solution de contournement d'autres plateformes)
Construire 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 au vagabond:
vagrant box add ubuntu-root file:///somepath/package.box
vous devez ensuite utiliser cette boîte de base pour créer vm, qui autorise la connexion automatique en tant que root.
Détruire la machine virtuelle d'origine par vagrant destroy
Éditez le Vagrantfile
original, changez le nom de la boîte en ubuntu-root
et le nom d'utilisateur en root
, puis vagrant up
en créez un nouveau.
Cela m'a pris du temps à comprendre, c'est trop compliqué à mon avis. Espoir vagabond améliorerait cela.
N'oubliez pas que root est autorisé à se connecter avant !!!
Placez le code de configuration ci-dessous dans le fichier /etc/ssh/sshd_config
.
PermitRootLogin yes
Je sais que c’est une vieille question, mais si on regarde la question initiale, il semble que l’utilisateur veuille exécuter une commande en tant que root. C’est ce que je dois faire lorsque je cherchais une réponse et que j’ai trébuché sur la question.
Donc, celui-ci mérite d'être connu à mon avis:
vagrant ssh servername -c "echo vagrant | Sudo -S shutdown 0"
vagrant
est le mot de passe repris dans la commande Sudo, car, comme nous le savons tous, le compte vagabond dispose des privilèges Sudo et lorsque vous utilisez Sudo, vous devez spécifier le mot de passe du compte utilisateur, et non, bien sûr, par défaut. le mot de passe de l'utilisateur vagrant est vagrant
!
Par défaut, vous devez disposer de privilèges root pour pouvoir vous arrêter. Par conséquent, je suppose que procéder à un arrêt est un bon test.
Évidemment, 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 locale vagabonde à 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 vous connecter en tant que root, même avec PermitRootLogin yes
. Je l'ai fait pour que seule la commande vagrant ssh
soit affectée:
# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
config.ssh.username = 'root'
end
Ajouter ceci à la Vagrantfile
a fonctionné pour moi. Ces lignes sont l’équivalent de la saisie de Sudo su -
à chaque fois que vous vous connectez. Veuillez noter que cela nécessite un réapprovisionnement de la machine virtuelle.
config.vm.provision "Shell", inline: <<-Shell
echo "Sudo su -" >> .bashrc
Shell