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
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
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 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:
vagrant ssh? (depois de fazer as alterações descritas) Vagrant versão 1.7.2
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.
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 sshe, em seguida, sudo sufazer root, mas (pelo que posso dizer) as configurações não funcionam em um novo vagrant upusando 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 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:
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-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.
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
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 .
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
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'