web-dev-qa-db-ja.com

デフォルトでrootとしてvagrantログイン

問題:ボックスに最初に入力するコマンドは、しばしばsu -です。

質問:vagrant sshにデフォルトでrootユーザーを使用させるにはどうすればよいですか?

バージョン:vagrant 1.6.5

84
Mike D

解決策:
次を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以降改善されています。この手法は、既知の秘密キーを使用する以前のメソッドにオーバーライドします。このソリューションは、公開前に適切なセキュリティ対策を講じることなく、一般にアクセス可能なボックスに使用することを意図したものではありません。

参照:

105
Mike D

これは便利です:

Sudo passwd root

最初にvagrantでルートパスワードを設定する必要性に気付いた人

119
Ed Williams

これは、ubuntu/trusty64ボックスを使用している場合に機能します。

vagrant ssh

Ubuntuボックスに入ったら:

Sudo su

これで、rootユーザーになりました。以下に示すように、rootパスワードを更新できます。

Sudo -i
passwd

ファイル/etc/ssh/sshd_configの次の行を編集します

PermitRootLogin yes

また、独自の代替ユーザー名を作成すると便利です。

adduser johndoe

パスワードが要求されるまで待ちます。

32
Thyag

ルートがログインする前に許可されていることを忘れないでください!!!

以下の構成コードを/etc/ssh/sshd_configファイルに配置します。

PermitRootLogin yes
10
Andrew Coding

以下のVagrantfileの場合:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

しかし、Vagrantは依然としてルートパスワードを要求します。おそらく、使用したベースボックスはルートログインを許可するように設定されていません。


たとえば、公式のubuntu14.04ボックスでは、PermitRootLogin yes/etc/ssh/sshd_configが設定されていません。

あなたがボックスがルートデフォルトとしてログインできるようにしたい場合(Vagrantfileのみ、これ以上の作業はありません)、あなたはする必要があります:

  1. ユーザー名vagrant(ルート以外の名前)でvmをセットアップします

  2. ログインして、sshd構成ファイルを編集します。

    ubuntu:/etc/ssh/sshd_configを編集、PermitRootLogin yesを設定

    その他:....

    (私はubuntuのみを使用していますが、他のプラットフォームの回避策を自由に追加してください)

  3. 新しいベースボックスを作成します。

    vagrant package --base your-vm-name
    

    これはファイルを作成しますpackage.box

  4. そのベースボックスをvagrantに追加します。

    vagrant box add ubuntu-root file:///somepath/package.box
    

    次に、このベースボックスを使用して、rootとして自動ログインできるvmを構築する必要があります。

  5. vagrant destroyで元のvmを破壊します

  6. 元のVagrantfileを編集し、ボックス名をubuntu-rootに、ユーザー名をrootに変更してから、vagrant upを作成します。

考え出すのに時間がかかりました。私の意見では複雑すぎます。浮浪者がこれを改善することを望む。

10
Mithril

私はこれが古い質問であることを知っていますが、元の質問を見ると、ユーザーがrootとしてコマンドを実行したかったように見えます。答えを探していて、質問に出くわしたときに私がする必要があることです。

したがって、これは私の意見で知る価値があります:

vagrant ssh servername -c "echo vagrant | Sudo -S shutdown 0"

vagrantは、Sudoコマンドにエコーされるパスワードです。これは、ご存じのとおり、迷走ア​​カウントにはSudo特権があり、Sudoを使用する場合、rootではなくユーザーアカウントのパスワードを指定する必要があるためです。浮浪者ユーザーのパスワードはvagrantです!

デフォルトでは、シャットダウンするにはルート権限が必要なので、シャットダウンを行うことは良いテストだと思います。

その迷惑な環境にサーバー名が1つしかない場合、サーバー名を指定する必要はありません。また、ホストへのローカルな迷走仮想マシンについても話しているため、実際に目にするセキュリティの問題はありません。

お役に立てれば。

1
Chris Barnett

PermitRootLogin yesであっても、rootとしてログインしようとすると、プロビジョニングに問題がありました。 vagrant sshコマンドのみが影響を受けるように作成しました。

# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
  config.ssh.username = 'root'
end
0
jxmallett

これをVagrantfileに追加するとうまくいきました。これらの行は、ログインするたびにSudo su -を入力するのと同じです。これにはVMの再プロビジョニングが必要であることに注意してください。

config.vm.provision "Shell", inline: <<-Shell
    echo "Sudo su -" >> .bashrc
Shell
0
fpereiro