Linux虚拟机设置网络、实现主机名ssh访问

本文详细介绍了如何在Linux虚拟机上配置SSH远程访问,包括设置hostname、修改网络配置、添加域名解析以及在Windows主机上进行IP和hostname映射的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装准备好的虚拟机,需要设置外网访问权限已经通过主机名的方式来ssh远程访问控制。

1,在linux上设置hostname,通过hostname来访问linux虚拟机

1.1. 修改hosts文件
vim /etc/hosts

#/etc/hosts 的内容一般有如下类似内容:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.136.128    oracle_master

保存退出。

1.2. 修改network

可以直接修改配置文件/etc/sysconfig/network
这里有一个HOSTNAME=yourname
直接修改掉就可以了。
NETWORKING=yes
HOSTNAME=oracle_master

1.3. 手动设置hostname
hostname oracle_master

PS:如果以上3步都做完了,但是发现hostname还是没有改变过来,就去看下面的几个文件,是否是以前的hostname值

[root@oraclem1 ~]# vim /etc/sysconfig/network
[root@oraclem1 ~]# find / -name hostname
/proc/sys/kernel/hostname
/bin/hostname
/usr/lib64/gettext/hostname
[root@oraclem1 ~]# vim /proc/sys/kernel/hostname
oraclem1

看到是以前的旧值,这里不能修改因为只读,所以需要reboot服务器生效,reboot之后,hostname就变成了新的oracle_master。

原csdn的blog发布地址:http://blog.youkuaiyun.com/mchdba/article/details/49339715:未经过原博主mchdba(黄杉)允许,谢绝转载

1.4,在linux本地设置ip和hostname的映射
[root@oracle_master ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 oracle_master
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.136.128    oracle_master
192.168.136.129    oracle_standby

这样直接通过ssh hostname就可以远程登录,如下所示:

[root@oracle_master ~]# ssh oracle_standby
Last login: Thu Oct 22 05:58:40 2015 from 192.168.136.128
[root@oracle_standby ~]# 
1.5,在本地windows上面设置映射

在C:\Windows\System32\drivers\etc\hosts添加
192.168.136.128 oracle_master

然后直接可以ping hostname ping通,如下所示:
C:\Users\Administrator>ping oracle_master

正在 Ping oracle_master [192.168.136.128] 具有 32 字节的数据:
来自 192.168.136.128 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.136.128 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.136.128 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.136.128 的回复: 字节=32 时间<1ms TTL=64

192.168.136.128 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms

C:\Users\Administrator>

2,在linux上设置网络地址

2.1 在eth0设置ip地址
[root@oracle_master ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0C:29:0A:79:E6
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
IPADDR=192.168.136.128
NETMASK=255.255.255.0
TYPE=Ethernet
GATEWAY=192.168.136.2
USERCTL=no

配置完后,重启

其中这里的gateway是从如下方式获取的,在VMware Workstation最上面一栏,选择“编辑”,再选择“虚拟网络编辑器(N)”,再选择“VMnet8”,再选择“NAT 设置(S)…”,有个“网关IP(G):”后面显示的就是gateway的值,如下图所示:
这里写图片描述
C:\Users\Administrator\Pictures\1022\1.png

其中这里的HWADDR是从如下方式获取的,在选择的“oracle_master”虚拟机上右键,在右键弹出后选择“设置(S)”,再选择“网络适配器”,再选择“高级(V)…”,就可以看到MAC地址(M)。如下图所示:
这里写图片描述
C:\Users\Administrator\Pictures\1022\2.png

2.2 设置域名解析配置文件,以便可以走域的方式上外网

nameserver可以设置成本地pc电脑的dns域名服务器ip地址,也可以设置成虚拟机的网关地址,这里设置的是网关地址:

[root@oracle_standby ~]# vim /etc/resolv.conf

# Generated by NetworkManager
nameserver 192.168.136.2

测试外网

[root@oracle_standby ~]# ping www.baidu.com
PING www.a.shifen.com (115.239.210.27) 56(84) bytes of data.
64 bytes from 115.239.210.27: icmp_seq=1 ttl=128 time=89.6 ms
64 bytes from 115.239.210.27: icmp_seq=2 ttl=128 time=312 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1462ms
rtt min/avg/max/mdev = 89.618/200.892/312.166/111.274 ms
[root@oracle_standby ~]# 

4,附带整理的一些DNS基础知识

/etc/resolv.conf
文件功能:DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名
相关文件:/etc/host.conf
文件格式:
domainname 域名
search 域名
nameserver Primary_DNS_Server_IP_address
nameserver Second_DNS_Server_IP_address

该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下:
search oracledg.com
nameserver 192.168.136.1
nameserver 192.168.136.2
“search domainname.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。
其中domainname和search可同时存在,也可只有一个;nameserver可指定多个
示例文件内容:
search oracledg.com
nameserver 192.168.136.3

<think>我们正在讨论如何通过SSH实现QEMU虚拟机与主机之间的网络通信。这个配置涉及到QEMU虚拟机网络设置,确保虚拟机与主机在同一网络环境下,并配置SSH服务以便通过SSH连接。步骤通常包括:1.配置QEMU虚拟机网络(例如使用桥接网络或端口转发)。2.在虚拟机内部安装并启动SSH服务。3.从主机通过SSH连接到虚拟机。由于用户之前的问题是关于QEMU虚拟机与主机之间的网络通信,特别是SSH,因此我们将提供详细的配置教程。常见的网络配置方法有两种:(1)用户模式网络(端口转发)-默认方式,简单但功能有限。(2)桥接网络(TAP设备)-更复杂,但虚拟机像真实机器一样在网络上。这里我们介绍两种方法,但注意:用户模式网络默认不支持从主机外部网络访问虚拟机,也不支持虚拟机作为网络上的独立节点。而桥接网络可以让虚拟机获得一个独立的IP地址,从而可以像物理机一样被访问。由于SSH需要双向可达的网络,我们更倾向于使用桥接网络(TAP设备)或者使用端口转发(用户模式)但配置端口转发。方法1:用户模式网络(端口转发)QEMU默认使用用户模式网络,它通过DHCP为虚拟机分配一个IP地址(通常是10.0.2.15),并且主机可以通过10.0.2.2这个IP访问虚拟机。但是,默认情况下,主机无法通过SSH连接到虚拟机,因为用户模式网络限制了入站连接。我们可以通过配置端口转发来实现。启动QEMU时,添加端口转发选项,将主机的某个端口(例如2222)转发到虚拟机SSH端口(22):```bashqemu-system-x86_64-hdaubuntu.img-m1024-netnic-netuser,hostfwd=tcp::2222-:22```这样,在主机上可以使用下面的命令连接虚拟机:```bashssh-p2222localhost```方法2:桥接网络(TAP设备)这种方法需要主机有配置桥接网络的能力(需要管理员权限,且Linux系统上需要bridge-utils和tunctl工具)。步骤:1.在主机上创建TAP设备并配置桥接。2.启动QEMU使用TAP设备并连接到桥接。3.在虚拟机内配置网络,使其能够从局域网内的DHCP获取IP地址或手动设置一个与主机同一网段的IP地址。详细步骤:(1)主机上创建桥接网络(假设桥接接口名为br0):安装必要的包:在Debian/Ubuntu上:`sudoaptinstallbridge-utilsuml-utilities`创建并配置桥接(可能需要编辑网络配置文件,这里以手动配置为例):创建桥接接口:```bashsudobrctladdbrbr0```将物理接口(比如eth0)添加到桥接(注意:这可能会暂时中断网络):```bashsudobrctladdifbr0eth0```创建TAP设备(比如tap0):```bashsudotunctl-u$(whoami)-ttap0sudobrctladdifbr0tap0sudoiplinksetdevtap0up```(2)启动QEMU,使用TAP设备:```bashqemu-system-x86_64-hdaubuntu.img-m1024-netnic-nettap,ifname=tap0,script=no,downscript=no```注意:这里script=no和downscript=no表示QEMU不会执行任何脚本来配置网络,因为我们已经手动配置了。(3)在虚拟机内,配置网络接口(例如eth0)为DHCP或者手动设置IP(确保与主机在同一子网)。然后,在虚拟机内安装并启动SSH服务:```bashsudoaptupdatesudoaptinstallopenssh-serversudosystemctlenablesshsudosystemctlstartssh```(4)查看虚拟机获取的IP地址(比如192.168.1.100),在主机上就可以通过SSH连接:```bashsshusername@192.168.1.100```注意:桥接网络配置因操作系统而异,上述步骤以Linux为例。总结:对于简单的使用,端口转发方法更容易配置,且不需要管理员权限。而桥接网络更灵活,使得虚拟机看起来像是局域网中的另一台主机。另外,还可以使用QEMU的Socket连接或者VDE2等更高级的网络配置,但以上两种是最常见的。我们还需要注意,虚拟机防火墙可能会阻止SSH连接,确保虚拟机内防火墙允许SSH端口(22)。最后,生成相关问题:§§相关问题§§1.如何在用户模式网络下配置多个端口的转发?2.桥接网络中,如何设置静态IP地址以避免每次启动虚拟机IP地址变化?3.在Windows主机上如何配置QEMU的桥接网络?4.使用SSH连接虚拟机时出现连接超时或拒绝连接,如何排除故障?</think> ### 通过SSH实现QEMU虚拟机与主机网络通信的配置教程 以下是在Linux环境下配置QEMU虚拟机SSH访问的完整流程,包含两种主流方式: --- ### **方法一:端口转发(推荐初学者)** #### 1. 启动QEMU虚拟机时配置端口转发 ```bash qemu-system-x86_64 \ -hda ubuntu.img \ -m 4G \ -smp 4 \ -net nic \ -net user,hostfwd=tcp::2222-:22 # 将主机的2222端口映射到虚拟机的22端口 ``` #### 2. 在虚拟机内部操作 ① 安装并配置SSH服务: ```bash sudo apt update && sudo apt install openssh-server -y sudo systemctl enable --now ssh ``` ② 获取虚拟机IP(可选验证): ```bash ip addr show dev ens3 # 通常显示类似192.168.122.X的地址 ``` #### 3. 从主机连接虚拟机 ```bash ssh -p 2222 username@localhost # 使用映射端口连接 ``` --- ### **方法二:桥接网络(高级用户)** #### 1. 主机端配置桥接网络 ① 安装必要组件: ```bash sudo apt install bridge-utils uml-utilities ``` ② 创建TAP设备: ```bash sudo ip tuntap add dev tap0 mode tap sudo ip link set tap0 up ``` ③ 创建网络桥接: ```bash sudo brctl addbr br0 sudo brctl addif br0 eth0 tap0 # eth0替换为主机物理网卡名 sudo ip link set br0 up ``` #### 2. 启动QEMU使用桥接网络 ```bash qemu-system-x86_64 \ -hda ubuntu.img \ -net nic,model=virtio \ -net tap,ifname=tap0,script=no,downscript=no ``` #### 3. 虚拟机内部配置 ① 手动配置IP(示例): ```bash sudo ip addr add 192.168.1.100/24 dev ens3 sudo ip route add default via 192.168.1.1 ``` ② 安装SSH服务(同方法一步骤2) #### 4. 主机连接虚拟机 ```bash ssh username@192.168.1.100 # 直接使用分配的IP ``` --- ### **关键验证命令** | 位置 | 命令 | 作用 | |------------|-------------------------------|--------------------------| | **主机** | `ss -tuln | grep 2222` | 检查端口映射是否生效 | | **虚拟机** | `sudo systemctl status ssh` | 检查SSH服务状态 | | **网络** | `ping 192.168.1.100` | 测试网络连通性(桥接模式)| --- ### **注意事项** 1. 安全配置: ```bash sudo nano /etc/ssh/sshd_config # 修改Port/PermitRootLogin等 ``` 2. 防火墙设置: ```bash sudo ufw allow 22 # 虚拟机内开放SSH端口 ``` 3. 故障诊断: - 检查`dmesg | grep tap`确认TAP设备状态 - 使用`tcpdump -i tap0`抓包分析 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值