Issue

Vagrant로 가상머신 부팅시 SSH auth method: private key 단계에서 멈출 때

TTOII 2022. 5. 8. 19:10
728x90

✔️ 문제 발생

vagrant up 후 SSH auth method: private key 단계에서 더 이상 넘어가지 않고 멈추거나 timeout 에러가 뜨는 문제가 발생했다.

 

✔️ 발생 원인

컴퓨터에 WSL 2가 설치되어 있다면 WSL 2와 Virtual Box 사이에 충돌이 발생한다. 

이런 오류는 Hyper-V 때문에 발생하는 것으로 Hyper-V 관련 설정을 제거 하면 Virtual Box가 정상 동작한다.

 

✔️ 문제 해결

기존에 WSL 2를 사용하여 Docker Desktop을 가동했었다면 이 방법은 추천하지 않는다.

아마 문제 해결 후 재부팅을 하면 다음과 같은 Docker Desktop 알림창이 뜰 것이다. 

나는 WSL 2보다 Virtual Box를 더 자주 사용하고 있어 Hyper-V를 사용하지 않는 것을 택했다.

다음 Powershell 스크립트(관리자용 Powershell)를 사용하여 WSL을 설치하고 Docker Desktop을 사용하기 전에 컴퓨터를 다시 시작합니다.

Enable-WindowsOptionFeature -Online -FeatureName $("VirtualMachinePlatform", Microsoft-windows-Subsystem-Linux")

해당 스크립트를 관리자 권한으로 실행한 PowerShell에서 실행하면 Windows 기능 끄기/켜기에서 가상 머신 플랫폼 기능과 Linux용 Windows 하위 시스템을 사용하기로 변경한다. 

 

Windows 기능 켜기/끄기 를 연다.

 

  • Linux용 Windows 하위 시스템 (참고로 나는 이 기능은 켜져 있었지만 Virtual Box 가 정상 작동했다.)
  • Hyper-V
  • Windows 하이퍼바이저 플랫폼
  • 가상 머신 플랫폼 

세가지 항목의 기능을 해제(끄기)한다.

이후 컴퓨터를 재부팅한뒤 다시 vagrant up 해본다.

PS C:\Users\Shinsohui\vagrant\container> vagrant up
Bringing machine 'docker' up with 'virtualbox' provider...
==> docker: Checking if box 'ubuntu/focal64' version '20220427.0.0' is up to date...
==> docker: Clearing any previously set forwarded ports...
==> docker: Clearing any previously set network interfaces...
==> docker: Preparing network interfaces based on configuration...
    docker: Adapter 1: nat
    docker: Adapter 2: hostonly
==> docker: Forwarding ports...
    docker: 22 (guest) => 2222 (host) (adapter 1)
==> docker: Running 'pre-boot' VM customizations...
==> docker: Booting VM...
==> docker: Waiting for machine to boot. This may take a few minutes...
    docker: SSH address: 127.0.0.1:2222
    docker: SSH username: vagrant
    docker: SSH auth method: private key
==> docker: Machine booted and ready!
[docker] GuestAdditions 6.1.32 running --- OK.
==> docker: Checking for guest additions in VM...
==> docker: Setting hostname...
==> docker: Configuring and enabling network interfaces...
==> docker: Mounting shared folders...
    docker: /vagrant => C:/Users/Shinsohui/vagrant/container
==> docker: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> docker: flag to force provisioning. Provisioners marked to run always will still run.

해당 내용이 출력되며 정상적으로 가상머신에 접속할 수 있게된다.

728x90