• vagrant root 登录虚拟机


    这个问题本来觉得是个特别简单的问题,昨天弄的时候折腾了半晚上。所以打算记录下过程,主要也被网上的各种信息误导了。

    1

    先看下我这vagrant配置信息

    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,密码一样。就像下面。

    config.ssh.username = "vagrant"
    config.ssh.password = "vagrant"
    

    配置上上面的信息然后 vagrant ssh登录,发现登录正常没有问题。修改root的密码。

    sudo -s
    passwd
    

    改完之后按照网上信息修改

    vim /etc/ssh/sshd_config
    PermitRootLogin prohibit-password
    改为
    PermitRootLogin yes
    重启ssh服务
    service sshd restart
    

    退出,修改vagrant登录信息

    config.ssh.username = "root"
    config.ssh.password = "密码"
    然后
    vagrant ssh
    提示
    root@127.0.0.1: Permission denied (publickey).
    

    不允许登录。一直没搞明白。后来又仔细看了下
    /etc/ssh/sshd_config
    发现有个关于密码的配置
    PasswordAuthentication no
    意思应该是密码授权,打开这个配置试试

    PasswordAuthentication yes
    记着重启服务
    service sshd restart
    

    然后改配置用户名
    config.ssh.username = "root"
    config.ssh.password = "密码"
    这次看着是对了,提示输入root密码,输入完之后,就可以直接登录了。

    2

    等等,我不是配置密码了么?为什么还提示我输入密码
    config.ssh.password = "密码"
    换成 vagrant 用户名,试着注释掉密码配置,照样正常登录。在换成root用户名,注释掉密码配置,提示输入密码,说明密码登录的配置没有实际意义,配不配置都需要手动输入密码。

    但是,vagrant用户为什么可以不需要密码直接登录,可能vagrant默认是秘钥登录的。使用vagrant账号登录看看vagrant的秘钥登录配置。

    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
    

    是不是就可以秘钥免密登录了???

  • 相关阅读:
    Oracle数据类型再探:plsql能建表时能用的数据类型
    数据库中的不同类型
    数据库类型研究
    代码块,静态变量,静态代码块,运算符优先级
    JAVA运算符
    Java多线程详解
    JAVA对象序列化(Serializable、ObjectOutputStream、ObjectInputStream、 transient)
    java的IO详解
    Java死锁
    Java重载、覆写、this、super、抽象类、接口
  • 原文地址:https://www.cnblogs.com/feixiangmanon/p/10992087.html
Copyright © 2020-2023  润新知