기본적으로 루트로 방랑자 로그인


94

문제점 : 자주 상자에 입력하는 첫 번째 명령은 su -.

질문 : vagrant ssh기본적으로 루트 사용자를 사용하려면 어떻게해야 합니까?

버전 : vagrant 1.6.5


Stack Overflow는 프로그래밍 및 개발 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제에서 벗어난 것처럼 보입니다. 도움말 센터에서 내가 질문 할 수있는 주제를 참조 하세요 . 아마도 슈퍼 유저Unix 및 Linux Stack Exchange 가 더 나은 곳일 것입니다. Dev Ops에 대한 질문
jww

답변:


146

이것은 유용합니다.

sudo passwd root

먼저 vagrant에서 루트 암호를 설정해야하는 필요성에 사로 잡힌 사람을 위해


1
내 생명을 구했습니다. 이것이 어떻게 방랑하는 행동에 영향을 미치는지 아십니까?
Matt

1
여기서 교훈은 기본 상자를 만드는 경우 Hashicorp에서 제안한 규칙을 따르고 루트 암호를 'vagrant'로 설정한다는 것입니다. docs.vagrantup.com/v2/boxes/base.html
Mike D

하지만 개인용 컴퓨터에있는 루트 암호를 쉽게 추측 할 수있는 서버에 잠재적 인 보안 문제가 있습니까? 네트워크 설정이 이것에 도움이 될 것이라고 생각하지만 궁금합니다.
Nathan Basanese

1
힌트 주셔서 감사합니다. Ubuntu의 방랑 상자가 루트 사용자에 대해 임의의 비밀번호를 설정하는 것으로 나타났습니다 ( groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J 참조 ). 따라서 항상 루트 암호를 먼저 설정해야합니다.
asmaier

정말이 필요 주셔서 감사합니다
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.*상자에 액세스하기 위해 새로 추가 된 줄 을 주석 처리 한 다음을 통해 루트 암호를 변경할 수 있어야합니다 sudo passwd root.
Mike D

11
이미 프로비저닝 된 기계를 들어, 위의 작업을 수행하고, 수행mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
펠리페 알바레즈

2
새로운 Vagrant 설치에는 작동하지 않습니다. 예를 들어 ubuntu / xenial을 사용할 때 하나의 HAS에서 구운 사용자 로그인을 사용하기 때문일 수 있습니다. ( stackoverflow.com/a/40478402/605463 참조 )
axd

1
다른 사용자 centos/7:이 상자는 임의의 루트 암호를 설정합니다. 하나는 할 수있는 vagrant ssh한 후 sudo su루트하지만, 설정 (I 무엇을 말할 수에서) 설정은 신선한 작업을하지 않는 vagrant up이 VM을 사용하여.
mhulse

37

이것은 ubuntu / trusty64 상자에있는 경우 작동합니다.

vagrant ssh

우분투 상자에 들어가면 :

sudo su

이제 루트 사용자입니다. 아래와 같이 루트 비밀번호를 업데이트 할 수 있습니다.

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는 여전히 루트 암호를 묻습니다. 사용했던 기본 상자가 루트 로그인을 허용하도록 구성되지 않았을 가능성이 높습니다.


예를 들어, offical 한 ubuntu14.04 상자가 설정하지 마십시오 PermitRootLogin yes/etc/ssh/sshd_config.

따라서 상자가 루트 기본값으로 로그인 할 수 있도록하려면 (Vagrantfile 만, 더 이상 작업하지 않음) 다음을 수행해야합니다.

  1. 사용자 이름으로 VM 설정 vagrant(루트 제외)

  2. sshd 구성 파일에 로그인하고 편집합니다.

    우분투 : 편집 /etc/ssh/sshd_config, 설정 PermitRootLogin yes

    기타 : ....

    (저는 우분투 만 사용하며 다른 플랫폼의 해결 방법을 자유롭게 추가 할 수 있습니다.)

  3. 새 기본 상자를 만듭니다.

    vagrant package --base your-vm-name
    

    이것은 파일을 만듭니다 package.box

  4. vagrant에 해당 기본 상자를 추가하십시오.

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

    그런 다음이 기본 상자를 사용하여 루트로 자동 로그인 할 수있는 vm을 빌드해야합니다.

  5. 원본 VM을 다음과 같이 파괴하십시오. vagrant destroy

  6. 원본을 수정 하고 Vagrantfile상자 이름을로 ubuntu-root, 사용자 이름을로 변경 root한 다음 vagrant up새 이름을 만듭니다.

알아내는 데 시간이 좀 걸렸고 제 생각에는 너무 복잡합니다. 희망 방랑자가 이것을 개선 할 것입니다.


10

루트는 루트가 전에 로그인 할 수 있다는 것을 잊지 마십시오 !!!

아래 구성 코드를 /etc/ssh/sshd_config파일에 넣으십시오 .

PermitRootLogin yes

SO에 오신 것을 환영합니다. 답변에 충분한 세부 사항과 컨텍스트를 추가하십시오. 특히 좋은 답변 된 질문에 대답 할 때
자얀

이것은 주요 솔루션보다 나에게 더 유용했습니다. ssh는 기본적으로 루트로 로그인 할 수 없습니다.
bmbigbang

2

이것을 Vagrantfile나를 위해 일했습니다. 이 줄은 sudo su -로그인 할 때마다 입력하는 것과 동일 합니다. 이를 위해서는 VM을 다시 프로비저닝해야합니다.

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

1
매우 간단한 솔루션에 감사드립니다! echo "sudo -s">> .bashrc가 더 좋습니다.
Honiix

@Honiix 의미 -i합니까? 😅
Thomas Gotwig

@ThomasGotwig 당신이 맞습니다.`-i`는`-s`보다 더 일반적입니다. 둘 다 당신이 원하는 것에 따라 작동합니다. 그러나 내 요점은 sudo와 su를 연결하지 않는 것이 가장 좋습니다.
Honiix

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

이렇게하면 루트 암호가로 설정 vagrant되고 암호로 루트 로그인이 허용됩니다. private_networkIP 주소 192.168.10.37로 say를 사용하는 경우 다음과 함께 ssh 할 수 있습니다.ssh root@192.168.10.37

기본 파일 에 따라 해당 echosed명령 을 변경해야 할 수 있습니다 sshd_config.


1

나는 이것이 오래된 질문이라는 것을 알고 있지만 원래 질문을 보면 사용자가 루트로 명령을 실행하기를 원한 것 같습니다. 그것이 답변을 검색하고 질문을 발견했을 때해야 할 일입니다.

그래서 이것은 내 의견으로 알 가치가 있습니다.

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

vagrant우리 모두 알다시피 방랑자 계정은 sudo 권한을 가지고 있고 sudo를 할 때 root가 아닌 사용자 계정의 암호를 지정해야하기 때문에 sudo 명령에 반영되는 암호입니다. 방랑자 사용자의 비밀번호는 vagrant!

기본적으로 종료하려면 루트 권한이 필요하므로 종료하는 것이 좋은 테스트라고 생각합니다.

해당 방랑 환경에 대해 서버 이름이 하나만있는 경우 분명히 서버 이름을 지정할 필요가 없습니다. 또한 호스트에 대한 로컬 방랑 가상 머신에 대해 이야기하고 있으므로 실제로 볼 수있는 보안 문제가 없습니다.

도움이 되었기를 바랍니다.


0

을 사용하더라도 루트로 로그인하려고 할 때 프로비저닝에 문제가있었습니다 PermitRootLogin yes. vagrant ssh명령 만 영향을 받도록 만들었습니다 .

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

-8
vagrant destroy
vagrant up

이것을 방랑 파일에 추가하십시오 :

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

기본 사용자가 이미 방랑자 이므로 아무 작업도 수행하지 않습니다 .
Jamal

config.ssh.username = 'vagrant'를 사용하는 대신 .... use config.ssh.username = 'root'.... 이것이 도움이 될 것입니다.
Jimmy MG Lim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.