这个问题原本以为是个特别简单的问题,昨天弄的时候折腾了半晚上。因此打算记录下过程,主要也被网上的各类信息误导了。shell
先看下我这vagrant配置信息apache
Vagrant.configure("2") do |config| config.vm.box = "base" config.vm.box_check_update = false config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "private_network", ip: "192.168.0.1" config.vm.synced_folder "/data/www", "/data/www" # config.vm.provision "shell", inline: <<-SHELL # apt-get update # apt-get install -y apache2 # SHELL end
发现没有登陆信息,而后网上查了下资料说是默认的登陆用户名是vagrant,密码同样。就像下面。vim
config.ssh.username = "vagrant" config.ssh.password = "vagrant"
配置上上面的信息而后 vagrant ssh登陆,发现登陆正常没有问题。修改root的密码。ssh
sudo -s passwd
改完以后按照网上信息修改.net
vim /etc/ssh/sshd_config PermitRootLogin prohibit-password 改成 PermitRootLogin yes 重启ssh服务 service sshd restart
退出,修改vagrant登陆信息vagrant
config.ssh.username = "root" config.ssh.password = "密码" 而后 vagrant ssh 提示 root@127.0.0.1: Permission denied (publickey).
不容许登陆。一直没搞明白。后来又仔细看了下
/etc/ssh/sshd_config
发现有个关于密码的配置
PasswordAuthentication no
意思应该是密码受权,打开这个配置试试rest
PasswordAuthentication yes 记着重启服务 service sshd restart
而后改配置用户名
config.ssh.username = "root"
config.ssh.password = "密码"
此次看着是对了,提示输入root密码,输入完以后,就能够直接登陆了。code
等等,我不是配置密码了么?为何还提示我输入密码
config.ssh.password = "密码"
换成 vagrant 用户名,试着注释掉密码配置,照样正常登陆。在换成root用户名,注释掉密码配置,提示输入密码,说明密码登陆的配置没有实际意义,配不配置都须要手动输入密码。ip
可是,vagrant用户为何能够不须要密码直接登陆,可能vagrant默认是秘钥登陆的。使用vagrant帐号登陆看看vagrant的秘钥登陆配置。get
vim ~/.ssh/authorized_keys 果真有秘钥配饰 JbDoShF6plkIvZfV1ol3OMGYRtG8V/fYOCgfv9VBHmBVda+yIuybtD vagrant
证明了咱们的猜想,vagrant默认是秘钥登陆,密码配置没有任何意义。
那咱们怎么将咱们的root用户也改成秘钥登陆呢?
下面咱们看下配置步骤
首先使用 root输密码登陆
vim /etc/ssh/sshd_config 打开两个关于秘钥的配置 RSAAuthentication yes PubkeyAuthentication yes 配置公钥 vim ~/.ssh/authorized_keys 将本身的公钥添加到这里。 重启服务 service sshd restart exit 退出虚拟机
修改vagrant配置数据,注释密码,加上私钥地址,
config.ssh.username = "root" #config.ssh.password = "vagrant" config.ssh.private_key_path = "/Users/XXX/.ssh/id_rsa"
不出意外,就能够跟vagrant用户同样免密登陆了。
有时候会提示输入私钥密码,说明没有找到私钥地址,作下添加私钥的操做就能够了。
sudo ssh-add -K ~/.ssh/id_rsa
是否是就能够秘钥免密登陆了???