问题:通常我输入框的第一个命令是 su -
。
问题:vagrant ssh
默认情况下如何使用root用户?
版本:无业游民1.6.5
Answers:
这很有用:
sudo passwd root
对于那些首先需要在流浪汉中设置root密码而被困的人
解决方案:
将以下内容添加到您的Vagrantfile
:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
当你vagrant ssh
从今以后,你会登录为root
,应该遇到下列情况:
==> 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!
2015年6月23日更新: 该版本也适用于1.7.2版。自1.7.0版以来,键控安全性得到了改进;该技术将覆盖使用已知私钥的先前方法。此解决方案不适用于在发布之前未采取适当安全措施的情况下可公开访问的盒子。
参考:
vagrant ssh
?(在进行了说明的更改后)Vagrant版本1.7.2
config.ssh.password
值。您应该能够注释掉新添加的config.ssh.*
行以访问您的框,然后通过更改root密码sudo passwd root
。
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
:此框设置随机的root密码;可以vagrant ssh
然后再sudo su
植根,但是(据我所知)配置设置在vagrant up
使用此VM时无法正常使用。
如果Vagrantfile
如下:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
但是流浪汉仍然询问您root密码,很可能您使用的基本框未配置为允许root登录。
例如,未PermitRootLogin yes
在中设置正式的ubuntu14.04框 /etc/ssh/sshd_config
。
因此,如果要使一个框可以作为默认的root用户登录(仅Vagrantfile,无需其他工作),则必须:
通过用户名设置虚拟机vagrant
(任何名称,但root)
登录并编辑sshd配置文件。
ubuntu:编辑/etc/ssh/sshd_config
,设置 PermitRootLogin yes
其他: ....
(我仅使用ubuntu,请随时添加其他平台的解决方法)
建立一个新的基本框:
vagrant package --base your-vm-name
这创建一个文件 package.box
将该基本框添加到无业游民:
vagrant box add ubuntu-root file:///somepath/package.box
然后,您需要使用此基础框来构建虚拟机,该虚拟机允许以root用户身份自动登录。
通过销毁原始虚拟机 vagrant destroy
编辑原始文件Vagrantfile
,将框名更改为ubuntu-root
,将用户名更改为root
,然后vagrant up
创建一个新的。
我花了一些时间弄清楚,我认为这太复杂了。希望流浪汉能改善这一点。
注意:仅将这种方法用于本地开发,这是不安全的。设置框时,您可以设置密码和ssh config。例如,在debian/stretch64
box中,这是我的配置脚本:
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
这会将root密码设置为,vagrant
并允许使用密码进行root登录。如果您使用private_network
IP地址说“话”,192.168.10.37
则可以使用sshssh root@192.168.10.37
您可能需要更改默认设置echo
和sed
命令,具体取决于默认sshd_config
文件。
我知道这是一个老问题,但是看着原始问题,用户似乎只是想以root用户身份运行命令,这就是我在寻找答案并偶然发现该问题时需要做的事情。
因此,在我看来,这一点值得了解:
vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"
vagrant
是在sudo命令中回显的密码,因为众所周知,流浪者帐户具有sudo特权,当您使用sudo时,您需要指定用户帐户的密码,而不是root用户。当然,默认情况下,流浪用户的密码为vagrant
!
默认情况下,您需要root特权才能关闭,所以我认为关闭是一个很好的测试。
显然,如果该游荡环境只有一个服务器名称,则无需指定服务器名称。另外,我们在谈论主机的本地无用虚拟机,因此我看不到任何安全问题。
希望这可以帮助。
vagrant destroy
vagrant up
请将此添加到流浪文件:
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'