流浪者默认登录为root


92

问题:通常我输入框的第一个命令是 su -

问题:vagrant ssh默认情况下如何使用root用户?

版本:无业游民1.6.5


堆栈溢出是一个用于编程和开发问题的站点。这个问题似乎与主题无关,因为它与编程或开发无关。请在帮助中心中查看我可以询问哪些主题。也许超级用户Unix&Linux Stack Exchange是一个更好的选择。另请参阅我在哪里发布有关Dev Ops的问题?
jww

Answers:


141

这很有用:

sudo passwd root

对于那些首先需要在流浪汉中设置root密码而被困的人


1
救了我一命。您知道这是否对流浪者的行为产生影响吗?
马特

1
这里的教训是,如果您创建一个基本框,请遵循Hashicorp建议的约定并将您的根passwd设置为'vagrant'。请参阅docs.vagrantup.com/v2/boxes/base.html
Mike D

但是,在您的个人计算机上摆放着非常容易猜到的root密码的服务器是否存在任何潜在的安全问题?我想网络设置对此有所帮助,但我想知道。
内森·巴桑尼斯

1
谢谢你的提示。事实证明,Ubuntu的“无所不在”框为root用户设置了随机密码(请参阅groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J)。因此,总是必须首先设置root密码。
asmaier 2015年

谢谢您,我们真的需
要这样做

110

解决方案:
将以下内容添加到您的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
隆重

@RobertIgnat可能需要设置根密码以匹配您的config.ssh.password值。您应该能够注释掉新添加的config.ssh.*行以访问您的框,然后通过更改root密码sudo passwd root
Mike D

11
对于已经配置的机器,请执行上述操作,然后执行mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
不适用于全新的Vagrant安装,可能是因为当使用例如ubuntu / xenial时,一个HAS会使用那里发布的用户登录名。(见stackoverflow.com/a/40478402/605463
AXD

1
对于使用的其他用户centos/7:此框设置随机的root密码;可以vagrant ssh然后再sudo su植根,但是(据我所知)配置设置在vagrant up使用此VM时无法正常使用。
mhulse

35

如果您在ubuntu / trusty64机器上,则此方法有效:

vagrant ssh

进入ubuntu框后:

sudo su

现在您是root用户。您可以如下所示更新root密码:

sudo -i
passwd

现在编辑文件中的以下行 /etc/ssh/sshd_config

PermitRootLogin yes

另外,创建自己的备用用户名也很方便:

adduser johndoe

等待,直到要求输入密码。


12

如果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,无需其他工作),则必须:

  1. 通过用户名设置虚拟机vagrant(任何名称,但root)

  2. 登录并编辑sshd配置文件。

    ubuntu:编辑/etc/ssh/sshd_config,设置 PermitRootLogin yes

    其他: ....

    (我仅使用ubuntu,请随时添加其他平台的解决方法)

  3. 建立一个新的基本框:

    vagrant package --base your-vm-name

    这创建一个文件 package.box

  4. 将该基本框添加到无业游民:

    vagrant box add ubuntu-root file:///somepath/package.box

    然后,您需要使用此基础框来构建虚拟机,该虚拟机允许以root用户身份自动登录。

  5. 通过销毁原始虚拟机 vagrant destroy

  6. 编辑原始文件Vagrantfile,将框名更改为ubuntu-root,将用户名更改为root,然后vagrant up创建一个新的。

我花了一些时间弄清楚,我认为这太复杂了。希望流浪汉能改善这一点。


10

不要忘记root是允许root登录之前!!!

将下面的配置代码放在/etc/ssh/sshd_config文件中。

PermitRootLogin yes

欢迎来到SO。请在答案中添加足够的详细信息和上下文。尤其是在回答一些具有很好答案的老问题时
Jayan

这对我来说比主要解决方案有用。ssh默认情况下不允许您以root用户身份登录。
bmbigbang

2

注意:仅将这种方法用于本地开发,这是不安全的。设置框时,您可以设置密码和ssh config。例如,在debian/stretch64box中,这是我的配置脚本:

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_networkIP地址说“话”,192.168.10.37则可以使用sshssh root@192.168.10.37

您可能需要更改默认设置echosed命令,具体取决于默认sshd_config文件。


1

将此添加到Vagrantfile为我工作。这些行等效于您sudo su -每次登录时输入的内容。请注意,这需要重新配置VM。

config.vm.provision "shell", inline: <<-SHELL
    echo "sudo su -" >> .bashrc
SHELL

感谢您非常简单的解决方案!echo“ sudo -s” >> .bashrc会更好。
Honiix

1

我知道这是一个老问题,但是看着原始问题,用户似乎只是想以root用户身份运行命令,这就是我在寻找答案并偶然发现该问题时需要做的事情。

因此,在我看来,这一点值得了解:

vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"

vagrant是在sudo命令中回显的密码,因为众所周知,流浪者帐户具有sudo特权,当您使用sudo时,您需要指定用户帐户的密码,而不是root用户。当然,默认情况下,流浪用户的密码为vagrant

默认情况下,您需要root特权才能关闭,所以我认为关闭是一个很好的测试。

显然,如果该游荡环境只有一个服务器名称,则无需指定服务器名称。另外,我们在谈论主机的本地无用虚拟机,因此我看不到任何安全问题。

希望这可以帮助。


0

尝试以root身份登录时,即使使用,我在配置方面也遇到了一些麻烦PermitRootLogin yes。我做到了,所以只有vagrant ssh命令受到影响:

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

-8
vagrant destroy
vagrant up

请将此添加到流浪文件:

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

这什么也不做,因为默认的用户已经是无业游民
Jamal

而不是使用config.ssh.username ='vagrant'....使用config.ssh.username ='root'....这将有所帮助。
Jimmy MG Lim,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.