新建Linux虚拟机后,想远程连接,核心答案是把网卡模式选对、IP地址设为静态、并确保SSH服务已开启。
配置IP前的三件准备:网卡模式、系统类型、SSH状态
很多朋友装好虚拟机后发现连不上,其实不是IP配置技巧有问题,而是底层环境没理顺,下面按顺序过一遍。
确认虚拟机网卡模式:NAT还是桥接
VMware和VirtualBox默认给虚拟机两种常见网络模式,选错是远程失败的根源。
- NAT模式:虚拟机藏在宿主机后面,对外部网络不可见,宿主机能访问虚拟机,外部设备想连虚拟机得先做端口转发。
- 桥接模式:虚拟机直接接入物理局域网,跟宿主机“平起平坐”,局域网内其他电脑可直接访问。
对于远程连接场景:如果你在公司或家里局域网内,让同事或另一台电脑直接SSH连过来,选桥接模式最省心,如果只是自己宿主机连虚拟机测试,NAT模式配合端口转发也行,但配置步骤多一层。
确认操作系统是否有图形化网络工具
Ubuntu桌面版自带nmtui或GNOME网络设置面板,而Server版或CentOS/Rocky最小化安装通常只有命令行,图形界面管不到的命令行网络,得用nmcli或改配置文件解决。
确认SSH服务已安装并启动
这是最容易忽略的一步,IP配得再对,SSH没启动也是白搭。
# Debian/Ubuntu系 sudo systemctl status ssh # 如果显示 inactive (dead),启动并设为开机自启 sudo systemctl enable --now ssh # CentOS/Rocky/RHEL系 sudo systemctl status sshd sudo systemctl enable --now sshd
状态为active (running)后,再继续后续操作。
Linux虚拟机静态IP设置方法:逐版本实操
行业共识认为,静态IP比DHCP分配更适合长期远程登录,DHCP分配的地址可能随时变,一旦IP漂移,你的Xshell或FinalShell连接配置就全部失效,下面分开说主流发行版怎么配。
Ubuntu 18.04及以上:netplan配置法
Ubuntu从18.04开始用netplan管理网络,配置文件位于/etc/netplan/目录下,通常是00-installer-config.yaml或01-network-manager-all.yaml。
先查看网卡名称:
ip addr show
常见的是ens33、ens160或eth0,记下后编辑配置文件:
sudo nano /etc/netplan/00-installer-config.yaml
桥接模式,静态IP):
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 114.114.114.114
- 8.8.8.8
注意两点:缩进必须用空格,YAML格式不接受Tab;168.1.100换成你局域网内的空闲地址,网关要跟路由器实际网关一致。
应用配置:
sudo netplan apply
验证是否生效:
ip addr show ens33 ping -c 4 www.baidu.com
可以ping通说明网络已通,如果报错,用sudo netplan try先测试配置,超时自动回滚,防止把SSH连接弄断。
CentOS/Rocky/AlmaLinux 8、9系:nmcli工具
这些发行版推荐用nmcli操作,比改配置文件更不容易出错。
# 查看连接名称 nmcli con show # 修改当前连接为静态配置 sudo nmcli con mod "System eth0" ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "114.114.114.114 8.8.8.8" # 重启网络连接(不是systemctl restart network,旧命令已废弃) sudo nmcli con up "System eth0"
重启后验证:
ip a ip route
通用应急方案:nmtui交互界面
如果不想记命令,装一下nmtui(NetworkManager文本用户界面),像操作图形界面一样完成配置:
sudo yum install -y NetworkManager-tui # RHEL系 sudo apt install network-manager # Ubuntu系 sudo nmtui
选Edit a connection,找到你的网卡,IPv4 CONFIGURATION选Manual,填入地址、网关、DNS,保存后激活,这方法在多数Linux虚拟机场景下都能解决静态IP设置问题。
虚拟机桥接模式IP怎么配置:以真实局域网为例
桥接模式下的配置核心差异在于IP段和宿主机保持一致,比如你宿主机Windows是168.31.200/24,网关是168.31.1,那么虚拟机就得设成168.31.x,而不是NAT模式下的168.xxx.xxx。
先查宿主机网络信息
Windows宿主机上执行ipconfig,确认:
- IPv4地址段
- 默认网关
- DNS服务器
Linux宿主机上执行ip addr和ip route。
设置虚拟机静态IP
按上文Ubuntu或CentOS的方法,把地址填成跟宿主机同一网段,例如宿主机是168.31.200,虚拟机可以设168.31.210,网关填168.31.1。
关键点: VMware里选桥接时,需要指定桥接到哪块物理网卡,如果宿主机有有线网卡和无线网卡,必须选实际连网的那块,否则虚拟机拿到了IP也出不了网,VirtualBox则在全局设置里选桥接网卡名称。
验证外部设备能否访问
配完后,用另一台电脑或手机(连同一个Wi-Fi)测试:
ping 192.168.31.210
能通,说明桥接成功,外部设备可以顺利SSH远程连接。
远程连接不上怎么解决:五个高频坑排查清单
即便是按静态IP设置方法操作,远程连接还是有翻车概率,多数情况下问题出在以下位置。
防火墙拦截了SSH端口
- Ubuntu:
sudo ufw status,如果active,执行sudo ufw allow 22/tcp - CentOS/Rocky:
sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
SELinux干扰(RHEL系专属)
getenforce
如果是Enforcing,临时放行SSH:
sudo setsebool -P ssh_sysadm_login on
不建议直接关SELinux,放行必要端口更安全。
SSH配置禁用了密码登录
编辑/etc/ssh/sshd_config,确认:
PasswordAuthentication yes PermitRootLogin yes # 如果想用root登录
然后重启SSH服务。
IP冲突导致连不上
虚拟机IP跟局域网其他设备撞了,症状是能ping通但SSH握手慢或直接拒绝,用arp-scan扫一下局域网:
sudo arp-scan --localnet
发现冲突,换一个IP重新设置。
VMware端口转发(NAT模式专用)
如果你坚持用NAT模式,得设置VMware端口转发规则,把宿主机的22026端口映射到虚拟机的22端口,然后用ssh -p 22026 root@宿主机IP连接。
三种网络模式的适用场景对比
| 模式 | 外部局域网设备能否直接连接 | 虚拟机能否访问外网 | 适用场景 | 配置复杂度 |
|---|---|---|---|---|
| NAT | 不能(需端口转发) | 能 | 纯本机测试 | 中 |
| 桥接 | 能 | 能 | 生产模拟、多机协作 | 低(网段选对即可) |
| 仅主机 | 不能 | 不能 | 隔离环境调试 | 低 |
如果拿不准选哪个,本地开发用NAT,需要跟同事联调或远程部署用桥接,这是运维圈默认的选法。
Linux虚拟机远程连接的其他细节
固定IP地址后,SSH会话断连是常态
改IP时,如果你本身正通过SSH连接,改完必定断线,正确姿势是用宿主机终端或VMware控制台改,改完再通过新IP重连。
笔记本场景:无线切换导致虚拟机失联
用笔记本跑虚拟机的场景下,桥接模式会跟着宿主机Wi-Fi走。宿主机从办公室Wi-Fi切到家里Wi-Fi,网段变了,虚拟机IP就会失联,业内专家指出,这种情况直接把虚拟机关机再开机,重新获取或改IP即可,别硬折腾宿主机网络。
云服务器场景不适用
本文讲解的是本地虚拟机,买的是简米云、酷番云这类云服务器的话,IP配置在控制台操作,不是命令行改配置文件,云服务器重置IP后重启会生效。
关于Linux虚拟机IP配置的常见问题
为什么我设置了静态IP后,虚拟机无法联网了吗?
网关和DNS填写错误是首要原因,先用ip route show default看看默认路由是否指向正确网关,再用cat /etc/resolv.conf确认DNS,如果网关填错,比如实际网关是168.31.1,填成168.1.1,必然上不了外网,另外要确认虚拟机的NAT或桥接是否选对了,如果选的是仅主机模式,虚拟机本身就无法访问外网。
虚拟机重启后IP地址变了,怎么固定下来?
静态IP配置正确的情况下不会变,如果变回去了,多半是配置文件没生效Ubuntu检查netplan apply执行过没有,CentOS检查nmcli con mod改的是不是当前活跃连接;另一种情况是网卡MAC地址变了,虚拟机克隆或快照恢复后MAC跟以前不一样,DHCP分配了新地址,查看网络配置里是否跟当前ip link显示的MAC一致。
SSH连接超时或拒绝连接,跟IP配置有关吗?
SSH连接被拒,需要区分是网络层问题还是ssh服务问题。ping虚拟机能通,说明IP配置和网络路径没问题,问题在SSH服务;ping不通,先检查虚拟机IP和宿主机IP是否在同一网段,再查防火墙规则,Ubuntu 22.04和CentOS 9默认SSH是允许的,但某些精简版系统默认没装SSH服务,需先apt install openssh-server或yum install openssh-server。
整体看下来,Linux虚拟机远程连接的根基在于选对网卡模式、配好静态IP、保证SSH存活这三板斧,桥接模式适合局域网内多设备互联,NAT模式适合本机自测,想一劳永逸就把静态IP写死在配置里,按上面步骤走一遍,大多数远程连接问题会在十分钟内理顺。