실행 중인 가상 머신에 어떻게 액세스하나요?

실행 중인 가상 머신에 어떻게 액세스하나요?

친구의 동료가 Gaming Alliance를 위한 자발적인 프로그램을 마련했습니다. 그런데 지금 문제는 그 사람이 부재중이고, 실행 중인 가상머신에 어떻게 접근하는지 모른다는 점입니다. 해결책을 찾기 위해 며칠 동안 인터넷을 검색했습니다.

이제 가상 머신이 qemu 및 kvm을 사용하여 libvirt에서 실행되고 있음을 알고 있습니다. virsh 명령을 통해 가상 머신을 시작하거나 종료할 수 있습니다(이것은 나에게 새로운 명령이기도 합니다).

ps ax | grep qemu

다음을 보여주세요:

16767 pts/0    S+     0:00 grep --color=auto qemu
18250 ?        Sl   388:50 /usr/bin/kvm -S -M pc-1.0 -enable-kvm -m 1000 -smp 4,sockets=4,cores=1,threads=1 -name Teamspeak1 -uuid a973dbb4-04e1-942b-1546-615f425b931b -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Teamspeak1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -drive file=/var/lib/libvirt/images/Teamspeak1.img,if=none,id=drive-ide0-0-0,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=18,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:29:5f:61,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:0 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
18295 ?        Sl    79:15 /usr/bin/kvm -S -M pc-1.0 -enable-kvm -m 1024 -smp 8,sockets=8,cores=1,threads=1 -name Webserver -uuid 14b56603-7323-2333-180c-227d02260acf -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Webserver.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -drive file=/var/lib/libvirt/images/Webserver.img,if=none,id=drive-ide0-0-0,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=18,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:f6:a1:37,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:1 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
18380 ?        Sl    19:32 /usr/bin/kvm -S -M pc-1.0 -enable-kvm -m 10000 -smp 8,sockets=8,cores=1,threads=1 -name Gameserver1 -uuid cb7b70e3-f049-7545-65d2-3adff36f34ff -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Gameserver1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device ahci,id=ahci0,bus=pci.0,addr=0x6 -drive file=/var/lib/libvirt/images/Gameserver1.img,if=none,id=drive-ide0-0-0,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -drive file=/var/lib/libvirt/images/Gameserver1-1.img,if=none,id=drive-sata0-0-0,format=raw -device ide-drive,bus=ahci0.0,drive=drive-sata0-0-0,id=sata0-0-0 -netdev tap,fd=18,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:7d:6e,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:2 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5

그는 또한 나에게 다음과 같은 통지문을 남겼습니다.

"게임 서버 1"의 경우:

root: kecks
user : game
pass: ***

ip: 192.168.122.161
FTP connection : ftp://***:2121

IP-Tables:
        //FTP: (Chrooted)
        49152-49153 (FTP Passive)
        2121 -> 21
        2020 -> 20
        //CS:GO 
        27015

예를 들어 "네트워크 서버"는 다음과 같습니다.

##User
root -> ***
webserver -> ***

192.168.122.198
Mysql root -> ***


ACCEPT     tcp  --  anywhere             192.168.122.198      state NEW,RELATED,ESTABLISHED tcp dpt:12001 // FTP
ACCEPT     tcp  --  anywhere             192.168.122.198      state NEW,RELATED,ESTABLISHED tcp dpt:12000 //FTP
ACCEPT     tcp  --  anywhere             192.168.122.198      state NEW,RELATED,ESTABLISHED tcp dpt:ftp-data
ACCEPT     tcp  --  anywhere             192.168.122.198      state NEW,RELATED,ESTABLISHED tcp dpt:ftp
ACCEPT     tcp  --  anywhere             192.168.122.198      state NEW,RELATED,ESTABLISHED tcp dpt:http

이미 이 도구를 사용한 시스템 관리자에게는 이것이 도움이 될 수 있지만 나에게는 도움이 되지 않았습니다.

VM에 대한 XML 구성 파일만 생성됩니다. 그래서 여기에는 필요하지 않다고 생각합니다. 서버는 Ubuntu 12.04.3 LTS에서 실행 중입니다. 복잡한 ssh, vnc 명령을 통해 접속을 시도했는데, 가상머신이 아닌 호스트에만 접속이 됩니다. 물론, 클래스 C 로컬 IPv4 주소만 보았기 때문에 호스트 시스템에서 SSH 연결을 통해 로컬로 시도했습니다.

편집: 아래 두 가지 답변으로 해결되었습니다. 해결책은 호스트의 SSH 세션 내에서 클래스 C IP 주소에 대한 SSH 연결을 설정하는 것입니다.

답변1

comamnd를 사용하여 VM 시작

# virsh start Gameserver1

실행 중인 서버 나열

# virsh list 

콘솔에서 서버에 액세스

# virt-viewer Gameserver1

그러면 서버의 콘솔이 열리고 그래픽으로 액세스할 수 있습니다.

가상 머신 사용 끄기

# virsh destroy Gameserver1

설치 패키지

centos ir fedora를 사용하는 경우 다음 패키지를 설치하십시오.

# yum install qemu libvirt-client virt-manager \
  virt-viewer guestfish libguestfs-tools virt-top

데비안이나 우분투를 사용하는 경우 다음을 설치하십시오.

# sudo apt-get install kvm libvirt-bin virt-manager virt-viewer virt-top virt-what

이렇게 하면 문제가 해결될 것입니다.

답변2

-vnc 127.0.0.1:x: VNC 터미널 에뮬레이터를 사용하여 주어진 자격 증명을 사용할 수 있는 로컬 호스트 포트 5900+x의 가상 터미널에 연결합니다.

관련 정보