SSH onto Vagrant Box With Different Username

后端 未结 4 1235
梦如初夏
梦如初夏 2020-12-22 22:46

Rather than ssh-ing onto my Vagrant virtual machine with a \"vagrant\" user-name and password, I\'d like to use kevin/kevin.

I modified my Vagrantfile t

相关标签:
4条回答
  • 2020-12-22 23:14

    Another solution, after adding user to Vagrant via your provisioning script:

    ## add kevin
    useradd -m -s /bin/bash -U kevin -u 666 --groups wheel
    cp -pr /home/vagrant/.ssh /home/kevin/
    chown -R kevin:kevin /home/kevin
    echo "%kevin ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/kevin
    

    add this to your Vagrant file:

    VAGRANT_COMMAND = ARGV[0]
    if VAGRANT_COMMAND == "ssh"
      config.ssh.username = 'kevin'
    end
    

    Now Vagrant will use default vagrant user to provision your VM, but once it's up, you can use simple vagrant ssh to log in as kevin via default Vagrant ssh-key.

    This way you can ship your desired Vagrantfile and users just say vagrant up and kevin automatically becomes ready to use.

    0 讨论(0)
  • 2020-12-22 23:22

    Create a vagrant file like the one below. Note that we are bootstrapping the vagrant user to immediately change to the 'kevin' user that we created.

    bootstrap = <<SCRIPT
      useradd -m kevin --groups sudo
      su -c "printf 'cd /home/kevin\nsudo su kevin' >> .bash_profile" -s /bin/sh vagrant
    SCRIPT
    
    Vagrant.configure("2") do |config|
      config.vm.box = "bento/ubuntu-16.04"
      config.vm.host_name = "kevin"
      config.vm.provision "shell", inline: "#{bootstrap}", privileged: true
    end
    

    now ssh into the vm:

    $ vagrant ssh
    Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-83-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    0 packages can be updated.
    0 updates are security updates.
    
    
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    kevin@kevin:/home/vagrant$
    
    0 讨论(0)
  • 2020-12-22 23:23

    A bit of a hack, but you could add the line sudo su - kevin to your .bash_profile file and add kevin to the sudoers file with no password.

    This will change the current user to kevin when logging in as the vagrant user from the command line.

    The advantage of this approach is that NAT does not need to be enabled.

    0 讨论(0)
  • 2020-12-22 23:29

    You can ssh to the box using vagrant but NOT kevin, that's expected.

    Most Vagrant base boxes have only 2 users with SSH access, root and vagrant. They both use vagrant as password, in addition, vagrant is configured for public key authentication using the insecure (why? see Vagrant insecure by default?) key pair provided in the Vagrant project on GitHub.

    To be able to login as kevin, you'll have to ssh into the box and create the user (useradd -m -s /bin/bash -U kevin) first, configure public key authentication (many ways e.g ssh-copy-id, I'll leave it to you.)

    You should be able to ssh into the box after creating the user using vagrant ssh if you properly set config.ssh.username in Vagrantfile.

    Of course you can manually ssh into the box by (assume NAT is in use)

    ssh -p 2222 kevin@localhost

    or (on Linux)

    ssh -p 2222 -i /opt/vagrant/embedded/gems/gems/vagrant-1.5.1/keys/vagrant.pub vagrant@localhost

    0 讨论(0)
提交回复
热议问题