Problema: freqüentemente o primeiro comando que digito nas minhas caixas é su -
.
Pergunta: como faço para vagrant ssh
usar o usuário root por padrão?
Versão: vagrant 1.6.5
Problema: freqüentemente o primeiro comando que digito nas minhas caixas é su -
.
Pergunta: como faço para vagrant ssh
usar o usuário root por padrão?
Versão: vagrant 1.6.5
Respostas:
Isso é útil:
sudo passwd root
para qualquer um que foi pego pela necessidade de definir uma senha de root no vagrant primeiro
Solução:
adicione o seguinte ao seu Vagrantfile
:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
De vagrant ssh
agora em diante, você fará o login como root
e deverá esperar o seguinte:
==> 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!
Atualização 23 de junho de 2015: Isso funciona para a versão 1.7.2 também. A segurança de codificação melhorou desde 1.7.0; esta técnica sobrescreve o método anterior que usa uma chave privada conhecida. Esta solução não se destina a ser usada em uma caixa que está acessível publicamente sem medidas de segurança adequadas feitas antes da publicação.
Referência:
vagrant ssh
? (depois de fazer as alterações descritas) Vagrant versão 1.7.2
config.ssh.password
valor. você deve ser capaz de comentar as config.ssh.*
linhas recém-adicionadas para acessar sua caixa e, em seguida, alterar a senha de root via sudo passwd root
.
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
: Esta caixa define uma senha de root aleatória; pode-se vagrant ssh
e, em seguida, sudo su
fazer root, mas (pelo que posso dizer) as configurações não funcionam em um novo vagrant up
usando esta VM.
Isso funciona se você estiver no box ubuntu / trusty64:
vagrant ssh
Assim que estiver na caixa do ubuntu:
sudo su
Agora você é o usuário root. Você pode atualizar a senha de root conforme mostrado abaixo:
sudo -i
passwd
Agora edite a linha abaixo no arquivo /etc/ssh/sshd_config
PermitRootLogin yes
Além disso, é conveniente criar seu próprio nome de usuário alternativo:
adduser johndoe
Espere até que ele peça a senha.
Se Vagrantfile
como abaixo:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
Mas o vagrant ainda pede a senha do root, provavelmente a caixa base que você usou não está configurada para permitir o login do root.
Por exemplo, a caixa oficial ubuntu14.04 não configurada PermitRootLogin yes
em /etc/ssh/sshd_config
.
Então, se você quiser que um box possa fazer o login como root default (somente Vagrantfile, não funcionará mais), você deve:
Configure uma VM por nome de usuário vagrant
(qualquer nome, exceto root)
Faça login e edite o arquivo de configuração sshd.
ubuntu: editar /etc/ssh/sshd_config
, definir PermitRootLogin yes
outras: ....
(Eu só uso ubuntu, fique à vontade para adicionar soluções alternativas para outras plataformas)
Construa uma nova caixa de base:
vagrant package --base your-vm-name
isso cria um arquivo package.box
Adicione essa caixa de base ao vagrant:
vagrant box add ubuntu-root file:///somepath/package.box
então, você precisa usar esta caixa base para construir vm que permite o login automático como root.
Destrua vm original por vagrant destroy
Edite o original Vagrantfile
, altere o nome da caixa para ubuntu-root
e o nome de usuário para e root
, em seguida, vagrant up
crie um novo.
Custou-me algum tempo descobrir, é muito complicado na minha opinião. Hope vagrant iria melhorar isso.
Não se esqueça de que o root tem permissão para fazer login antes !!!
Coloque o código de configuração abaixo no /etc/ssh/sshd_config
arquivo.
PermitRootLogin yes
Nota: Use este método apenas para desenvolvimento local, não é seguro . Você pode definir a senha e a configuração do ssh ao provisionar a caixa. Por exemplo, com debian/stretch64
box, este é meu script de provisão:
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
Isso definirá a senha de root como vagrant
e permitirá o login de root com senha. Se você estiver usando private_network
say with ip address, 192.168.10.37
então você pode ssh comssh root@192.168.10.37
Você pode precisar alterar isso echo
e os sed
comandos, dependendo do sshd_config
arquivo padrão .
Adicionar isso ao Vagrantfile
funcionou para mim. Essas linhas são equivalentes a você inserir sudo su -
cada vez que fizer login. Observe que isso requer o reprovisionamento da VM.
config.vm.provision "shell", inline: <<-SHELL
echo "sudo su -" >> .bashrc
SHELL
Eu sei que esta é uma pergunta antiga, mas olhando para a pergunta original, parece que o usuário só queria executar um comando como root, isso é o que eu preciso fazer quando estava procurando por uma resposta e tropecei na pergunta.
Portanto, vale a pena saber este em minha opinião:
vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"
vagrant
é a senha que está sendo ecoada no comando sudo, porque como todos sabemos, a conta vagrant tem privilégios sudo e quando você sudo, você precisa especificar a senha da conta do usuário, não root .. e, claro, por padrão, o a senha do usuário vagrant é vagrant
!
Por padrão, você precisa de privilégios de root para desligar, então acho que desligar é um bom teste.
Obviamente você não precisa especificar um nome de servidor se houver apenas um para aquele ambiente vagrant. Além disso, estamos falando sobre máquina virtual vagrant local para o host, então não há realmente nenhum problema de segurança que eu possa ver.
Espero que isto ajude.
vagrant destroy
vagrant up
Adicione isto ao arquivo vagrant:
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'