CS 할당을 위해 가상 머신을 받았습니다. Gnome Boxes에서 열었지만(VM 이미지를 두 번 클릭하면 됩니다) 거기에 코드를 작성하는 대신 로컬 컴퓨터에서 코드를 작성하고 가상 컴퓨터에서 SSH를 통해 컴파일하고 싶습니다. 가상 머신은 .ova 확장자를 가지며 Boxes Preferences에 Broker QEMU Session, Display Protocol SPICE를 표시합니다. SSH의 원격 IP로 무엇을 사용해야 합니까? 가상 머신에 추가 구성이 필요합니까? 어떻게 추가해야 하나요?
답변1
가장 간단한 방법은 역방향 SSH 터널을 사용하는 것입니다.
가상 머신 내부에서 실행합니다.
ssh -NT -R 2222:localhost:22 user@_gateway
user
호스트의 사용자 이름은 어디에 있습니까?
이제 다음 명령을 사용하여 호스트에서 연결할 수 있습니다
ssh -p 2222 guestuser@localhost
사용자 guestuser
이름은 guest입니다.
시작할 때마다 게스트에서 명령을 실행하지 않으려면 autossh
서비스에서 사용할 수 있습니다.
답변2
그놈 박스는 어떤 기능을 제공하나요?
GNOME Boxes는 Open Virtualization Format 파일을 두 번 클릭하면 자동으로 가져옵니다.
GNOME Boxes는 게스트를 SSH에 노출시키지 않습니다. 가지실 것으로 예상됩니다.SPICE 게스트 보충다음을 수행하려면 게스트에 설치하세요.
- 호스트와 게스트 간 공유 클립보드를 사용하여 텍스트 복사 및 붙여넣기
- 파일을 게스트로 끌어다 놓습니다.
이 접근 방식은 GNOME을 사용하는 비숙련 사용자도 직관적이고 이해할 수 있어야 합니다.이 응용 프로그램의 목표:
하지만가상 관리자가상 머신 관리 소프트웨어로서 매우 훌륭한 작업을 수행하며 시스템 관리 및 가상 머신에 적합합니다. 반면에 Boxes는 새 운영 체제나 자신이 선호하는 운영 체제의 새로운(아마도 불안정한) 버전을 시험해 볼 수 있는 매우 안전하고 쉬운 방법을 원하는 일반적인 데스크톱 최종 사용자를 대상으로 합니다. 원격 컴퓨터에 연결합니다(홈 오피스 연결이 일반적인 사용 사례입니다). 따라서 Boxes는 가상 머신 튜닝을 위해 virt-manager가 제공하는 많은 고급 옵션을 제공하지 않습니다. 대신 Boxes는 사용자의 입력이 거의 없이 상자에서 바로 작동하도록 만드는 데 중점을 둡니다.
즉, Boxes는 주로 다음과 같은 형태로 virt-manager 프로젝트와 많은 코드를 공유합니다.라이브러리 가상 머신,리보 정보그리고게임.
참고로3년 전에 비활성화된 제안Boxes에서 포트 전달을 구현합니다.
다양한 도구를 사용하세요
SSH를 통해 게스트에 연결해야 하는 경우 작업에 적합한 도구를 사용하여 설정을 구성하고 virt-manager
"가상 네트워크"(동적 또는 무선 인터페이스를 갖춘 호스트의 경우) 또는"LAN에 브리지"(정적 유선 인터페이스가 있는 호스트의 경우). 반면에 박스는 user
모드 네트워크를 사용하여 게스트를 구성합니다.사용자 공간 SLiRP 스택. 원하는 경우 virt-manager
기존 설정을 수정하고 Boxes에서 게스트를 계속 사용할 수 있습니다. 나는 이 작업을 직접 수행한 적이 없으므로 이를 사용하기로 선택한 경우 virt-manager
다른 튜토리얼이 필요합니다.
포워드 포트
또 다른 방법은 QEMU에 호스트의 포트를 게스트의 포트로 전달하도록 지시하는 것입니다. 변경 사항이 무시되고 덮어쓰기 때문에 텍스트 편집기를 사용하여 게스트의 구성 파일을 수정할 수 없습니다. visrh
패키지에 있는 libvirt-clients
(적어도 Debian에서는) 사용 가능한 를 사용하여 수정할 수 있습니다 . 상자에 있는 게스트 속성의 시스템 탭에 있는 문제 해결 로그의 두 번째 줄에서 도메인 이름을 확인할 수 있습니다. 또는 ~/.config/libvirt/qemu
예를 들어 내 설치에서 설치된 게스트 컴퓨터와 연결된 도메인 이름은 "boxes-unknown"입니다. 이 시스템의 구성을 편집하려면 다음을 입력합니다.
virsh edit boxes-unknown
내 설치의 게스트에 대한 기존 네트워크 구성:
<interface type='user'>
<mac address='52:54:00:3d:69:49'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
안타깝게도 호스트에서 게스트로 포트 전달을 추가하기 위해 XML을 수정할 수는 없습니다. 이 기능을 사용할 수 없습니다DomainXML 형식에 의해 사용됩니다 libvirt
.2013년에 보낸 이메일이 기능에 대한 제안이 실패했음을 나타냅니다. 따라서 게스트 가상 머신을 시작할 때 QEMU에 전달할 관련 매개변수를 제공해야 합니다. 기존 네트워크 인터페이스는 수정할 수 없으므로 이를 설명하는 XML 부분을 제거하여 생성을 방지하기만 하면 됩니다. 대신 QEMU에 전달된 인수에 이를 복사해야 합니다.
문제 해결 로그에 따르면 내 설정에서 위의 네트워크 구성은 다음 매개변수에 해당합니다.
-netdev user,id=hostnet0 \
-device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:3d:69:49,bus=pci.0,addr=0x3 \
에서 매개변수의 의미를 확인할 수 있습니다 man qemu-system-x86_64
.
자동 구성에서는 사용자 정의 QEMU 매개변수를 고려하지 않기 때문에 버스와 주소를 복사하고 싶지 않습니다. 이로 인해 주소 할당 시 가끔 충돌이 발생하여 클라이언트가 시작되지 않을 수 있습니다. 대신, 사용자 정의 네트워크 인터페이스에 자동으로 할당되도록 허용합니다.
장치 이름을 기억해 두세요. 예를 들어 따로 지정하지 않으면 기본적으로 구성되는 rtl8139
것 같아요 .e1000
<domain type='kvm'>
QEMU 명령줄 요소의 XML 네임스페이스를 포함하도록 태그를 수정해야 합니다 .
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
그런 다음 닫는 태그 앞에 QEMU 명령줄 매개변수를 추가할 수 있습니다 </domain>
. 아래 예에서는 ssh localhost -p 2222
호스트에서 포트 포워딩을 수행하고 http://localhost:8080
호스트의 브라우저에서 웹 서버에 액세스 할 수 있도록 포트 포워딩을 추가했습니다 . 설정 및 기본 설정에 맞게 이 예제를 수정해야 할 수도 있습니다. 필요한 경우 hostfwd
매개변수 구문을 에서 읽을 수 있습니다 man qemu-system-x86_64
.
<qemu:commandline>
<qemu:arg value='-device'/>
<qemu:arg value='rtl8139,netdev=hostnet0'/>
<qemu:arg value='-netdev'/>
<qemu:arg value='user,id=hostnet0,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80'/>
</qemu:commandline>
해당 QEMU 매개변수는 다음과 같습니다.
-device rtl8139,netdev=hostnet0 \
-netdev user,id=hostnet0,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80
이것으로부터 위의 XML을 생성하는 것은 어렵지 않지만,당신은 또한 사용할 수 있습니다 virsh domxml-from-native qemu-argv
당신을 위해 맞춤화되었습니다.
포트를 전달하는 데 필요한 전부인 것 같습니다.QEMU 위키에 따르면.
손님에게도 비슷한 접근 방식을 사용할 수 있습니다 virt-manager
.https://unix.stackexchange.com/a/519067/423679
virsh
오류가 발생하면 파일을 저장할 때 XML 유효성 검사를 건너뛰지 마세요. 먼저 구문을 수정해 보세요. 만약을 대비해 구성 파일의 백업을 보관하는 것을 잊지 마십시오.