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

如何在MacOS的Podman容器中连接主机的SSH隧道?

在MacOS的Podman中通过主机SSH隧道访问远程服务器

核心原理

Podman在MacOS上运行于轻量虚拟机中,容器无法直接访问主机的127.0.0.1接口,但可以通过Podman内置的host.containers.internal域名访问主机。只要将SSH隧道绑定到主机的所有网络接口(而非仅127.0.0.1),容器就能通过该域名访问隧道端口。

步骤1:配置SSH隧道监听所有接口

默认SSH隧道仅绑定127.0.0.1,Podman虚拟机无法访问。执行以下命令启动隧道时,指定监听0.0.0.0:

ssh -L 0.0.0.0:<本地端口>:<远程服务器地址>:<远程端口> <远程用户名>@<远程主机地址>

示例:将远程MySQL(3306端口)映射到主机的8080端口

ssh -L 0.0.0.0:8080:db.example.com:3306 admin@jump.example.com

验证隧道:在主机执行telnet localhost 8080或curl localhost 8080,确认连接正常。

步骤2:在Podman容器中访问隧道

运行容器时,直接使用host.containers.internal:<本地端口>访问远程服务:

# 示例:用Alpine容器测试连接远程MySQL
podman run --rm alpine mysql -h host.containers.internal -P 8080 -u dbuser -p

如果容器内的应用需要配置固定地址,直接填写host.containers.internal即可,Podman会自动解析为主机在虚拟机内的可达IP。

关于Podman网络接口的说明

Podman 4.x及以上版本在MacOS中默认使用netavark网络栈,替代了旧版的CNI,因此不会出现cni-podman0接口。无需手动配置额外网络接口,host.containers.internal是官方推荐的主机访问方式。

注意事项

  • 确保MacOS防火墙未阻止Podman虚拟机访问主机的隧道端口(可临时关闭防火墙测试)
  • 若SSH隧道需要保持后台运行,可添加-fN参数:ssh -fNL 0.0.0.0:8080:db.example.com:3306 admin@jump.example.com

内容的提问来源于stack exchange,提问作者Franz Wong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:27:30