vagrant login como root por padrão


92

Problema: freqüentemente o primeiro comando que digito nas minhas caixas é su -.

Pergunta: como faço para vagrant sshusar o usuário root por padrão?

Versão: vagrant 1.6.5


Stack Overflow é um site para questões de programação e desenvolvimento. Esta questão parece estar fora do tópico porque não é sobre programação ou desenvolvimento. Veja sobre quais tópicos posso perguntar aqui na Central de Ajuda. Talvez Superusuário ou Unix e Linux Stack Exchange sejam um lugar melhor para perguntar. Veja também Onde eu posto perguntas sobre Dev Ops?
jww

Respostas:


141

Isso é útil:

sudo passwd root

para qualquer um que foi pego pela necessidade de definir uma senha de root no vagrant primeiro


1
Salvou a minha vida. Você sabe se isso tem alguma repercussão na forma como o vagabundo age?
Matt

1
A lição aqui é que se você criar uma caixa base, siga as convenções sugeridas por Hashicorp e defina sua senha de root como 'vagrant'. consulte docs.vagrantup.com/v2/boxes/base.html
Mike D

No entanto, há algum problema de segurança em potencial com um servidor que possui uma senha de root realmente fácil de adivinhar em seu computador pessoal? Imagino que as configurações de rede ajudem nisso, mas me pergunto.
Nathan Basanese de

1
Obrigado pela dica. Acontece que as caixas vagrant do Ubuntu definem uma senha aleatória para o usuário root (consulte groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Portanto, é sempre necessário definir uma senha de root primeiro.
asmaier

Obrigado, realmente precisava disso
ka_lin

110

Solução:
adicione o seguinte ao seu Vagrantfile:

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

De vagrant sshagora em diante, você fará o login como roote 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:


Pode haver algum motivo para receber o prompt de senha durante a execução vagrant ssh? (depois de fazer as alterações descritas) Vagrant versão 1.7.2
roign

@RobertIgnat possivelmente que você precisa definir sua senha de root para corresponder ao que você tem em seu config.ssh.passwordvalor. 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.
Mike D

11
Para uma máquina que já foi provisionada, faça o acima e façamkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
não funciona para uma nova instalação do Vagrant, provavelmente porque quando alguém usa, por exemplo, ubuntu / xenial, TEM que usar os logins de usuário criados lá. (consulte também stackoverflow.com/a/40478402/605463 )
axd

1
Para qualquer outra pessoa que use centos/7: Esta caixa define uma senha de root aleatória; pode-se vagrant sshe, em seguida, sudo sufazer root, mas (pelo que posso dizer) as configurações não funcionam em um novo vagrant upusando esta VM.
mhulse

35

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.


12

Se Vagrantfilecomo 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 yesem /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:

  1. Configure uma VM por nome de usuário vagrant(qualquer nome, exceto root)

  2. 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)

  3. Construa uma nova caixa de base:

    vagrant package --base your-vm-name

    isso cria um arquivo package.box

  4. 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.

  5. Destrua vm original por vagrant destroy

  6. Edite o original Vagrantfile, altere o nome da caixa para ubuntu-roote o nome de usuário para e root, em seguida, vagrant upcrie um novo.

Custou-me algum tempo descobrir, é muito complicado na minha opinião. Hope vagrant iria melhorar isso.


10

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_configarquivo.

PermitRootLogin yes

Bem-vindo ao SO. Adicione detalhes e contexto suficientes às respostas. Especialmente ao responder uma pergunta antiga com algumas boas respostas
Jayan

isso foi mais útil para mim do que a solução principal. ssh não permite que você faça login como root por padrão.
bmbigbang

2

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/stretch64box, 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 vagrante permitirá o login de root com senha. Se você estiver usando private_networksay with ip address, 192.168.10.37então você pode ssh comssh root@192.168.10.37

Você pode precisar alterar isso echoe os sedcomandos, dependendo do sshd_configarquivo padrão .


1

Adicionar isso ao Vagrantfilefuncionou 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

Obrigado pela sua solução muito simples! echo "sudo -s" >> .bashrc seria melhor.
Honiix,

1

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.


0

Tive alguns problemas com o provisionamento ao tentar fazer o login como root, mesmo com PermitRootLogin yes. Eu fiz isso para que apenas o vagrant sshcomando fosse afetado:

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

-8
vagrant destroy
vagrant up

Adicione isto ao arquivo vagrant:

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

Isso não faz nada, pois o usuário padrão já é vagrant .
Jamal

em vez de usar config.ssh.username = 'vagrant' .... use config.ssh.username = 'root' .... isso ajudará.
Jimmy MG Lim
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.