Virtual-Machine

如何訪問正在執行的虛擬機?

  • August 9, 2014

我的一個朋友的同事建立了一個遊戲聯盟的志願項目。但現在的問題是,這個人不可用,我不知道應該如何訪問正在執行的虛擬機。我花了幾天時間在網際網路上搜尋以找到解決方案。

現在我知道虛擬機是在帶有 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

他還給我留下了以下通知:

對於“Gameserver1”:

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

還有例如“Webserver”:

##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 命令訪問它的所有嘗試只將我帶到主機,而不是 VM。當然,我在主機上使用 ssh 連接在本地嘗試了這個,因為我只看到了 C 類本地 IPv4 地址。

編輯:解決了以下兩個答案。解決方案是在與主機的 ssh 會話中建立到類 c ip-adresses 的 ssh 連接。

-vnc 127.0.0.1:x:使用 VNC 終端仿真器連接到 localhost 埠 5900+x 上的虛擬終端,您可以在其中使用給定的憑據。

使用命令啟動 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

如果您使用基於 debian 或 ubuntu 請安裝以下

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

這將解決您的問題

引用自:https://unix.stackexchange.com/questions/149179