You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH连接multipass虚拟机提示Resource temporarily unavailable如何解决

问题排查与解决步骤

核心原因确认

Multipass默认创建的实例使用NAT虚拟网络,分配的10.136.x网段是仅宿主机可访问的内部子网,外部设备(同局域网其他电脑、Github Action服务器)没有路由能到达该子网,这是故障的根本原因,和你已经排查的防火墙、SSH服务配置无关。

你可以先执行以下命令验证当前Multipass的网络驱动模式:
multipass get local.driver
如果返回值为qemu/lxd,即可确认是默认NAT网络模式。


解决方法

方案1:端口映射(推荐,配置简单)

将宿主机的指定端口映射到虚拟机的22端口,外部设备通过访问宿主机IP+映射端口连接实例:

  1. 新创建实例时直接指定端口映射:
    multipass launch --name <你的实例名> --port 2222:22
    上述命令将宿主机2222端口映射到虚拟机22端口
  2. 已有实例可通过宿主机iptables配置转发规则:
# 开启宿主机IP转发
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf && sudo sysctl -p
# 配置端口转发规则
sudo iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.136.38.199:22
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.136.38.199 --dport 22 -j MASQUERADE

配置完成后,外部设备的SSH连接命令修改为:
ssh -vvv -i back_key ubuntu@<宿主机的局域网/公网IP> -p 2222

方案2:桥接网络(适合同局域网设备访问场景)

将实例直接桥接到宿主机物理网卡,实例会获取和宿主机同网段的局域网IP,同局域网下所有设备可直接访问:

  1. 先查看宿主机物理网卡名称,执行ip addr找到你正在使用的物理网卡(通常命名为eno1/eth0/wlan0等)
  2. 新创建实例时指定桥接配置:
    multipass launch --name <你的实例名> --network bridge=<你的物理网卡名>
  3. 已有实例可执行以下命令追加桥接网卡:
multipass set local.bridged-network=<你的物理网卡名>
multipass network attach bridged <你的实例名>

配置完成后用multipass list查看实例获取的同网段IP,直接用该IP做SSH连接即可。


额外注意事项

  • 如果你需要从Github Action访问该实例,你的宿主机必须拥有公网IP,或者通过内网穿透工具将映射的2222端口暴露到公网,否则Github的公共服务器无法访问到你的内网设备
  • 配置完成后如果仍有连接问题,可执行ss -tulpn | grep 2222检查宿主机的映射端口是否被其他进程占用

内容的提问来源于stack exchange,提问作者Hamza Ince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:54:08