如何为Vagrant VM启用密码ssh身份验证?

时间:2017-08-23 13:31:00

标签: ssh passwords vagrant

我想为可能Vagrant VM启用密码ssh身份验证(并启用基于密钥的身份验证)。怎么设置?

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "fedora/26-cloud-base"
  config.vm.box_version = "20170705"

  config.ssh.username = 'vagrant'
  config.ssh.password = 'a'
  config.ssh.keys_only = false
end
$ sudo vagrant ssh-config 
Host default
  HostName 192.168.121.166
  User vagrant
  Port 22
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /home/jakub/src/kubernetes-vms/kubernetes/.vagrant/machines/default/libvirt/private_key
  LogLevel FATAL

此设置不接受密码a

我想PasswordAuthentication no的输出可能是vagrant ssh-config。如何打开该选项?

5 个答案:

答案 0 :(得分:8)

对我来说,以下是有效的。您需要像往常一样ssh到vm,然后编辑/etc/ssh/sshd_config。在那里,您需要将PasswordAuthentication设置为yes而不是no。这将允许密码验证。

答案 1 :(得分:3)

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "fedora/26-cloud-base"
  config.vm.box_version = "20170705"

  config.vm.provision 'shell', inline: 'echo "vagrant:a" | chpasswd'
end

config.vm.provision 'shell', inline: 'echo "vagrant:a" | chpasswd'调用更改vagrant用户密码的shell配置(前提是该框附带了名为vagrant的预定义用户)。

然后,不仅可以通过vagrant ssh连接,还可以连接

ssh vagrant@<vm-ip>

答案 2 :(得分:2)

如果要对VM强制进行密码验证,则需要从Vagrantfile中设置以下内容

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

您需要确保VM中的vagrant用户具有相应的密码。我不确定你使用的盒子,所以你需要自己验证。它适用于以下框:ubuntu/trusty64

答案 3 :(得分:2)

要使用密码ssh,这将自动更新debian / stretch64上的sshd配置:

config.vm.provision "shell", inline: <<-SHELL
  sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config    
  service ssh restart
SHELL

答案 4 :(得分:1)

centos 7,仅使用下面的方法是不够的。通过这种方式,我猜想它只是使import java.util.*; import java.lang.*; import java.io.*; import java.util.regex.Matcher; import java.util.regex.Pattern; class Ideone { static void extractWord(String str) { String regex = "[a-zA-Z]+"; // compiling regex Pattern p = Pattern.compile(regex); // Matcher object Matcher m = p.matcher(str); while(m.find()) { System.out.println(m.group()); } } public static void main (String[] args) { String str = "123ABC456"; extractWord(str); } } 成为密码。我找不到任何无法在official site中使用以下内容的原因。

su vagrant

您应该手动修改sshd_config。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"

  config.ssh.username = 'vagrant'
  config.ssh.password = 'vagrant'
  config.ssh.insert_key = false
end

P.S:我的英语不太好