「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
ではなく、 kevin
(Vagrantfile
で指定されている場合でも)。
ユーザー名kevin
を使用してsshできるようにVagrantfileを構成するにはどうすればよいですか?
vagrant
は使用できますが、kevin
は使用しないでください。
ほとんどのVagrantベースボックスには、root
とvagrant
のSSHアクセスを持つ2人のユーザーしかいません。両方ともvagrant
をパスワードとして使用し、さらにvagrant
は、安全でない(なぜ? デフォルトでは安全でないVagrant? を参照)キーペアを使用して公開キー認証用に構成されますGitHubのVagrantプロジェクト。
kevin
としてログインできるようにするには、まずsshにログインしてユーザー(useradd -m -s /bin/bash -U kevin
)を作成し、公開鍵認証を構成する必要があります(多くの方法、たとえばssh-copy-id
、I '任せます。)
Vagrantfile
でvagrant 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
プロビジョニングスクリプトを介して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 up
とkevin
は自動的に使用可能になります。
以下のような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$
ちょっとしたハックですが、次の行を追加できますSudo su - kevin
を.bash_profileファイルに追加し、kevinをパスワードなしでsudoersファイルに追加します。
これにより、コマンドラインからvagrantユーザーとしてログインすると、現在のユーザーがkevinに変更されます。
このアプローチの利点は、NATを有効にする必要がないことです。