問題:ボックスに最初に入力するコマンドは、しばしばsu -
です。
質問:vagrant ssh
にデフォルトでrootユーザーを使用させるにはどうすればよいですか?
バージョン:vagrant 1.6.5
解決策:
次をVagrantfile
に追加します。
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
vagrant ssh
以降、root
としてログインし、次のことを期待します。
==> mybox: Waiting for machine to boot. This may take a few minutes...
mybox: SSH address: 127.0.0.1:2222
mybox: SSH username: root
mybox: SSH auth method: password
mybox: Warning: Connection timeout. Retrying...
mybox: Warning: Remote connection disconnect. Retrying...
==> mybox: Inserting Vagrant public key within guest...
==> mybox: Key inserted! Disconnecting and reconnecting using new SSH key...
==> mybox: Machine booted and ready!
2015年6月23日更新:これはバージョン1.7.2でも機能します。キーイングのセキュリティは1.7.0以降改善されています。この手法は、既知の秘密キーを使用する以前のメソッドにオーバーライドします。このソリューションは、公開前に適切なセキュリティ対策を講じることなく、一般にアクセス可能なボックスに使用することを意図したものではありません。
参照:
これは便利です:
Sudo passwd root
最初にvagrantでルートパスワードを設定する必要性に気付いた人
これは、ubuntu/trusty64ボックスを使用している場合に機能します。
vagrant ssh
Ubuntuボックスに入ったら:
Sudo su
これで、rootユーザーになりました。以下に示すように、rootパスワードを更新できます。
Sudo -i
passwd
ファイル/etc/ssh/sshd_config
の次の行を編集します
PermitRootLogin yes
また、独自の代替ユーザー名を作成すると便利です。
adduser johndoe
パスワードが要求されるまで待ちます。
ルートがログインする前に許可されていることを忘れないでください!!!
以下の構成コードを/etc/ssh/sshd_config
ファイルに配置します。
PermitRootLogin yes
以下のVagrantfile
の場合:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
しかし、Vagrantは依然としてルートパスワードを要求します。おそらく、使用したベースボックスはルートログインを許可するように設定されていません。
たとえば、公式のubuntu14.04ボックスでは、PermitRootLogin yes
に/etc/ssh/sshd_config
が設定されていません。
あなたがボックスがルートデフォルトとしてログインできるようにしたい場合(Vagrantfileのみ、これ以上の作業はありません)、あなたはする必要があります:
ユーザー名vagrant
(ルート以外の名前)でvmをセットアップします
ログインして、sshd構成ファイルを編集します。
ubuntu:/etc/ssh/sshd_config
を編集、PermitRootLogin yes
を設定
その他:....
(私はubuntuのみを使用していますが、他のプラットフォームの回避策を自由に追加してください)
新しいベースボックスを作成します。
vagrant package --base your-vm-name
これはファイルを作成しますpackage.box
そのベースボックスをvagrantに追加します。
vagrant box add ubuntu-root file:///somepath/package.box
次に、このベースボックスを使用して、rootとして自動ログインできるvmを構築する必要があります。
vagrant destroy
で元のvmを破壊します
元のVagrantfile
を編集し、ボックス名をubuntu-root
に、ユーザー名をroot
に変更してから、vagrant up
を作成します。
考え出すのに時間がかかりました。私の意見では複雑すぎます。浮浪者がこれを改善することを望む。
私はこれが古い質問であることを知っていますが、元の質問を見ると、ユーザーがrootとしてコマンドを実行したかったように見えます。答えを探していて、質問に出くわしたときに私がする必要があることです。
したがって、これは私の意見で知る価値があります:
vagrant ssh servername -c "echo vagrant | Sudo -S shutdown 0"
vagrant
は、Sudoコマンドにエコーされるパスワードです。これは、ご存じのとおり、迷走アカウントにはSudo特権があり、Sudoを使用する場合、rootではなくユーザーアカウントのパスワードを指定する必要があるためです。浮浪者ユーザーのパスワードはvagrant
です!
デフォルトでは、シャットダウンするにはルート権限が必要なので、シャットダウンを行うことは良いテストだと思います。
その迷惑な環境にサーバー名が1つしかない場合、サーバー名を指定する必要はありません。また、ホストへのローカルな迷走仮想マシンについても話しているため、実際に目にするセキュリティの問題はありません。
お役に立てれば。
PermitRootLogin yes
であっても、rootとしてログインしようとすると、プロビジョニングに問題がありました。 vagrant ssh
コマンドのみが影響を受けるように作成しました。
# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
config.ssh.username = 'root'
end
これをVagrantfile
に追加するとうまくいきました。これらの行は、ログインするたびにSudo su -
を入力するのと同じです。これにはVMの再プロビジョニングが必要であることに注意してください。
config.vm.provision "Shell", inline: <<-Shell
echo "Sudo su -" >> .bashrc
Shell