溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么實(shí)現(xiàn)libvirt的遠(yuǎn)程訪(fǎng)問(wèn)

發(fā)布時(shí)間:2022-01-14 15:30:55 來(lái)源:億速云 閱讀:277 作者:柒染 欄目:云計(jì)算

怎么實(shí)現(xiàn)libvirt的遠(yuǎn)程訪(fǎng)問(wèn),針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

/etc/libvirt/libvirtd.conf 是 libvirt 的守護(hù)進(jìn)程 libvirtd 的配置文件, 配置了 libvirtd 啟動(dòng)時(shí)的許多設(shè)置,包括是否建立 TCP、UNIX domain socket 等連接方式及其最大連接數(shù),以及這些連接的認(rèn)證機(jī)制,等等. 修改后需要讓libvirtd重新加載配置文件(或重啟libvirtd)才會(huì)生效。打開(kāi)libvirtd.conf會(huì)發(fā)現(xiàn)很多都是用的默認(rèn)選項(xiàng)。為了實(shí)現(xiàn)遠(yuǎn)程控制訪(fǎng)問(wèn)。需要打開(kāi)被注釋掉的幾個(gè)參數(shù)并修改之:

listen_tls = 0
listen_tcp = 1
tcp_port = “16509”
auth_tcp = “none”

要讓TCP、TLS等連接的生效,需要在啟動(dòng) libvirtd 時(shí)加上 –listen 參數(shù)(簡(jiǎn)寫(xiě)為 -l )。而默認(rèn)的 service libvirtd start 命令啟動(dòng) libvirtd 服務(wù)時(shí),并沒(méi)帶 –listen 參數(shù),所以如果要使用TCP等連接方式,可以使用下面的命令來(lái)啟動(dòng)libvirtd

libvirtd –listen -d

驗(yàn)證,可以通過(guò)virsh來(lái)驗(yàn)證:

virsh -c qemu+tcp://localhost:16509/system

如果是其他機(jī)器需要把對(duì)應(yīng)的localhost換成ip或主機(jī)名。而且注意打開(kāi)16509端口。

下面是一段c實(shí)現(xiàn)的列出所有虛擬主機(jī)名的程序。通過(guò)tcp無(wú)密碼連接方式。

/* compile with: gcc test.c -o test -lvirt */
#include <stdio.h>
#include <stdlib.h>
#include <libvirt/libvirt.h>
int main(int argc, char *argv[])
{
    int numofdom;
    int i;
    virDomainPtr *namelist=NULL;
    int flags= VIR_CONNECT_LIST_DOMAINS_ACTIVE | VIR_CONNECT_LIST_DOMAINS_INACTIVE;
    virConnectPtr conn;
    //use actual ip address
    conn=virConnectOpenAuth("qemu+tcp://192.168.234.128/system",virConnectAuthPtrDefault,0);

    if (conn == NULL) 
    {
        fprintf(stderr, "Failed to open connection to qemu:///system\n");
        return -1;
    }
    numofdom=virConnectListAllDomains(conn,&namelist,flags);
    if(numofdom==-1)
    {
        fprintf(stderr,"Failed to get num of domain:\n");
        return -1;
    }
    for(i=0;i<numofdom;i++)
    {
        printf("domain %d:  %s\n",i,virDomainGetName(namelist[i]));
        virDomainFree(namelist[i]);
    }
    free(namelist);
    virConnectClose(conn);
    return 0;
}

關(guān)于怎么實(shí)現(xiàn)libvirt的遠(yuǎn)程訪(fǎng)問(wèn)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI