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