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


92

問題:私がボックスに最初に入力するコマンドは頻繁にですsu -

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

バージョン:vagrant 1.6.5


Stack Overflowは、プログラミングと開発に関する質問のためのサイトです。この質問はプログラミングや開発に関するものではないため、トピックから外れているようです。ヘルプセンターで、どのようなトピックについて質問できますかをご覧ください。おそらく、スーパーユーザーまたはUnix&Linux Stack Exchangeのほうがよいでしょう。また、Dev Opsに関する質問
jww

回答:


141

これは便利です:

sudo passwd root

最初にvagrantにrootパスワードを設定する必要があることに夢中になっている人のために


1
私を助けた。これが浮浪者の行動に影響があるかどうか知っていますか?
Matt

1
ここでの教訓は、ベースボックスを作成する場合は、Hashicorpによって提案された規則に従い、ルートパスワードを「vagrant」に設定することです。docs.vagrantup.com/v2/boxes/base.htmlを
Mike D

とはいえ、パーソナルコンピュータにrootパスワードが簡単に推測されるサーバーに潜在的なセキュリティの問題はありますか?ネットワーク設定がこれに役立つと思いますが、私は疑問に思います。
Nathan Basanese

1
ヒントありがとうございます。Ubuntuのvagrantボックスがrootユーザーにランダムなパスワードを設定していることがわかります(groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4Jを参照)。したがって、常に最初にrootパスワードを設定する必要があります。
2015年

ありがとう、本当にこれが必要
ka_lin

110

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

参照:


実行中にパスワードプロンプトが表示される理由はありますvagrant sshか?(上記の変更を行った後)Vagrantバージョン1.7.2
roign

@RobertIgnatおそらく、自分のconfig.ssh.password値にあるものと一致するようにルートパスワードを設定する必要があります。新しく追加されたconfig.ssh.*行をコメント化してボックスにアクセスし、を介してrootパスワードを変更できますsudo passwd root
マイクD

11
すでにプロビジョニングされているマシンの場合は、上記のmkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
フェリペアルバレス

2
たとえば、ubuntu / xenialを使用すると、そこに焼き付けられたユーザーログインを使用する必要があるため、Vagrantの新規インストールでは機能しません。(stackoverflow.com/a/40478402/605463も参照)
axd

1
他の人が使用する場合centos/7:このボックスはランダムなrootパスワードを設定します。1缶vagrant ssh、その後、sudo su根に、しかし、コンフィグ設定は新鮮では動作しません(私が言うことができるものから)vagrant upこのVMを使用しました。
mhulse 2018年

35

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

vagrant ssh

あなたがubuntuボックスに入ったら:

sudo su

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

sudo -i
passwd

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

PermitRootLogin yes

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

adduser johndoe

パスワードを要求するまで待ちます。


12

Vagrantfile以下の場合:

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

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


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

したがって、ボックスをrootのデフォルトとしてログインできるようにする場合(Vagrantfileのみ、これ以上の作業は不要)、次のようにする必要があります。

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

  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. 元のVMを破壊する vagrant destroy

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

理解するのに少し時間がかかりましたが、私の意見では複雑すぎます。浮浪者がこれを改善することを望みます。


10

rootは以前にrootがログインを許可されていることを忘れないでください!!!

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

PermitRootLogin yes

SOへようこそ。回答に十分な詳細とコンテキストを追加してください。特にいくつかの良い答えで古い質問に答えるとき
Jayan

これは、メインのソリューションよりも私にとって便利でした。sshでは、デフォルトでrootとしてログインできません。
bmbigbang

2

注:この方法はローカル開発にのみ使用してください安全ではありません。ボックスのプロビジョニング中に、パスワードとSSH構成を設定できます。たとえばdebian/stretch64ボックスの場合、これは私のプロビジョニングスクリプトです。

config.vm.provision "shell", inline: <<-SHELL
    echo -e "vagrant\nvagrant" | passwd root
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    sed -in 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
    service ssh restart
SHELL

これにより、rootパスワードがに設定されvagrant、パスワードでのrootログインが許可されます。private_networksay with ip address を使用している場合は192.168.10.37、次のコマンドでsshできます。ssh root@192.168.10.37

あなたはそれを変更する必要があるかもしれませんechoし、sedコマンドがデフォルトに応じてsshd_configファイル。


1

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

config.vm.provision "shell", inline: <<-SHELL
    echo "sudo su -" >> .bashrc
SHELL

非常にシンプルなソリューションをありがとう!echo "sudo -s" >> .bashrcのほうが良いでしょう。
Honiix

1

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

だからこれは私の意見で知る価値があります:

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

vagrantsudoコマンドにエコーされるパスワードです。ご存じのとおり、vagrantアカウントにはsudo権限があり、sudoを実行するときは、rootではなくユーザーアカウントのパスワードを指定する必要があります。もちろん、デフォルトでは、迷惑なユーザーのパスワードはvagrant

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

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

お役に立てれば。


0

rootとしてログインしようとすると、プロビジョニングに問題がありました。 PermitRootLogin yesvagrant sshコマンドだけが影響を受けるように作成しました:

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

-8
vagrant destroy
vagrant up

これをvagrantファイルに追加してください:

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

デフォルトのユーザーはすでにvagrantであるため、これは何もしません。
Jamal

config.ssh.username = 'vagrant'を使用する代わりに.... config.ssh.username = 'root'を使用してください...これは役立ちます。
ジミーMGリム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.