web-dev-qa-db-ja.com

別のユーザー名でVagrant BoxにSSH

「Vagrant」ユーザー名とパスワードでVagrant仮想マシンにsshするのではなく、kevin/kevinを使用したいと思います。

Vagrantfileを次のように変更しました:

config.ssh.username = "kevin"

次に、vagrant reload

次の出力が表示されました。

[default] Waiting for machine to boot. This may take a few minutes...
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period. This can
mean a number of things.

ただし、vagrant/vagrant、それでも私はユーザー名とパスワードがkevin/kevinまたはkevin/vagrantのボックスにsshできませんでした。

私もこの答えを試したことに注意してください( https://stackoverflow.com/a/9924122/409976 )が、ユーザー名vagrantではなく、 kevinVagrantfileで指定されている場合でも)。

ユーザー名kevinを使用してsshできるようにVagrantfileを構成するにはどうすればよいですか?

40
Kevin Meredith

vagrantは使用できますが、kevinは使用しないでください。

ほとんどのVagrantベースボックスには、rootvagrantのSSHアクセスを持つ2人のユーザーしかいません。両方ともvagrantをパスワードとして使用し、さらにvagrantは、安全でない(なぜ? デフォルトでは安全でないVagrant? を参照)キーペアを使用して公開キー認証用に構成されますGitHubのVagrantプロジェクト。

kevinとしてログインできるようにするには、まずsshにログインしてユーザー(useradd -m -s /bin/bash -U kevin)を作成し、公開鍵認証を構成する必要があります(多くの方法、たとえばssh-copy-id、I '任せます。)

Vagrantfilevagrant sshを適切に設定した場合、config.ssh.usernameを使用してユーザーを作成した後、ボックスにsshできるはずです。

もちろん、(NATが使用されていると仮定して)

ssh -p 2222 kevin@localhost

または(Linuxの場合)

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

53
Terry Wang

プロビジョニングスクリプトを介してVagrantにユーザーを追加した後の別のソリューション:

## 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

これをVagrantファイルに追加します。

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

Vagrantはデフォルトのvagrantユーザーを使用してVMをプロビジョニングしますが、いったん起動すると、簡単なvagrant sshデフォルトのVagrant ssh-keyを介してkevinとしてログインします。

これにより、希望のVagrantfileを出荷でき、ユーザーはvagrant upkevinは自動的に使用可能になります。

21
Benny K

以下のようなvagrantファイルを作成します。 vagrantユーザーをブートストラップして、作成した「kevin」ユーザーにすぐに変更することに注意してください。

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

vmにsshします:

$ 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$
2
Aidan Melen

ちょっとしたハックですが、次の行を追加できますSudo su - kevinを.bash_profileファイルに追加し、kevinをパスワードなしでsudoersファイルに追加します。

これにより、コマンドラインからvagrantユーザーとしてログインすると、現在のユーザーがkevinに変更されます。

このアプローチの利点は、NATを有効にする必要がないことです。

1