문제점 : 자주 상자에 입력하는 첫 번째 명령은 su -
.
질문 : vagrant ssh
기본적으로 루트 사용자를 사용하려면 어떻게해야 합니까?
버전 : vagrant 1.6.5
문제점 : 자주 상자에 입력하는 첫 번째 명령은 su -
.
질문 : vagrant ssh
기본적으로 루트 사용자를 사용하려면 어떻게해야 합니까?
버전 : vagrant 1.6.5
답변:
이것은 유용합니다.
sudo passwd root
먼저 vagrant에서 루트 암호를 설정해야하는 필요성에 사로 잡힌 사람을 위해
솔루션 :
다음을 추가하십시오 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
config.ssh.password
가치에 있는 것과 일치하도록 루트 암호를 설정해야 할 수도 있습니다 . config.ssh.*
상자에 액세스하기 위해 새로 추가 된 줄 을 주석 처리 한 다음을 통해 루트 암호를 변경할 수 있어야합니다 sudo passwd root
.
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
:이 상자는 임의의 루트 암호를 설정합니다. 하나는 할 수있는 vagrant ssh
한 후 sudo su
루트하지만, 설정 (I 무엇을 말할 수에서) 설정은 신선한 작업을하지 않는 vagrant up
이 VM을 사용하여.
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 만, 더 이상 작업하지 않음) 다음을 수행해야합니다.
사용자 이름으로 VM 설정 vagrant
(루트 제외)
sshd 구성 파일에 로그인하고 편집합니다.
우분투 : 편집 /etc/ssh/sshd_config
, 설정 PermitRootLogin yes
기타 : ....
(저는 우분투 만 사용하며 다른 플랫폼의 해결 방법을 자유롭게 추가 할 수 있습니다.)
새 기본 상자를 만듭니다.
vagrant package --base your-vm-name
이것은 파일을 만듭니다 package.box
vagrant에 해당 기본 상자를 추가하십시오.
vagrant box add ubuntu-root file:///somepath/package.box
그런 다음이 기본 상자를 사용하여 루트로 자동 로그인 할 수있는 vm을 빌드해야합니다.
원본 VM을 다음과 같이 파괴하십시오. vagrant destroy
원본을 수정 하고 Vagrantfile
상자 이름을로 ubuntu-root
, 사용자 이름을로 변경 root
한 다음 vagrant up
새 이름을 만듭니다.
알아내는 데 시간이 좀 걸렸고 제 생각에는 너무 복잡합니다. 희망 방랑자가 이것을 개선 할 것입니다.
이것을 Vagrantfile
나를 위해 일했습니다. 이 줄은 sudo su -
로그인 할 때마다 입력하는 것과 동일 합니다. 이를 위해서는 VM을 다시 프로비저닝해야합니다.
config.vm.provision "shell", inline: <<-SHELL
echo "sudo su -" >> .bashrc
SHELL
-i
합니까? 😅
참고 : 이 방법은 로컬 개발에만 사용하며 안전하지 않습니다 . 상자를 프로비저닝하는 동안 암호 및 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_network
IP 주소 192.168.10.37
로 say를 사용하는 경우 다음과 함께 ssh 할 수 있습니다.ssh root@192.168.10.37
기본 파일 에 따라 해당 echo
및 sed
명령 을 변경해야 할 수 있습니다 sshd_config
.
나는 이것이 오래된 질문이라는 것을 알고 있지만 원래 질문을 보면 사용자가 루트로 명령을 실행하기를 원한 것 같습니다. 그것이 답변을 검색하고 질문을 발견했을 때해야 할 일입니다.
그래서 이것은 내 의견으로 알 가치가 있습니다.
vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"
vagrant
우리 모두 알다시피 방랑자 계정은 sudo 권한을 가지고 있고 sudo를 할 때 root가 아닌 사용자 계정의 암호를 지정해야하기 때문에 sudo 명령에 반영되는 암호입니다. 방랑자 사용자의 비밀번호는 vagrant
!
기본적으로 종료하려면 루트 권한이 필요하므로 종료하는 것이 좋은 테스트라고 생각합니다.
해당 방랑 환경에 대해 서버 이름이 하나만있는 경우 분명히 서버 이름을 지정할 필요가 없습니다. 또한 호스트에 대한 로컬 방랑 가상 머신에 대해 이야기하고 있으므로 실제로 볼 수있는 보안 문제가 없습니다.
도움이 되었기를 바랍니다.
vagrant destroy
vagrant up
이것을 방랑 파일에 추가하십시오 :
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'