家里Mac需开启SSH服务并监听入站连接,配置公网跳板机SSH监听0.0.0.0:22且放行端口,再在家用ssh -R 6000:127.0.0.1:22建立反向隧道,外网即可通过跳板机端口6000安全访问。

先确认家里Mac已开启SSH服务
外网SSH隧道的前提是家里Mac必须能被本机SSH连接——不是“能连上”,而是“监听着且允许入站”。打开「系统设置」→「通用」→「共享」→勾选「远程登录」,右侧确保「仅这些用户」中已添加你要用的账户。【若勾选的是“所有用户”,远程连接时可能因权限策略被系统自动拒绝】
终端执行sudo systemsetup -getremotelogin,返回Remote Login: On才算真正生效。如果返回Off,立刻补一句sudo systemsetup -setremotelogin on并输密码。
准备一台公网跳板机(云服务器)
这台机器必须:有固定公网IP、22端口可SSH登录、能稳定运行(推荐Ubuntu 22.04+或CentOS 7+)。不要用家庭宽带做跳板——NAT层级深、连接易断、IP常变。
登录跳板机后,检查SSH服务是否监听通配地址:sudo ss -tlnp | grep ':22'。若只显示127.0.0.1:22,说明SSH只接受本地连接,需编辑/etc/ssh/sshd_config,把ListenAddress行注释掉或改为0.0.0.0,再执行sudo systemctl restart sshd。
跳板机防火墙必须放行22端口(SSH)和你后续要映射的端口(如6000),UFW用户执行:sudo ufw allow 22 && sudo ufw allow 6000。
在家里的Mac上建立反向SSH隧道
反向隧道的核心是让家里的Mac主动连出去,把本地SSH端口“送”到跳板机上。打开家里Mac的终端,执行以下命令:
ssh -fNT -R 6000:127.0.0.1:22 user@jump-server-ip -o ExitOnForwardFailure=yes -o ServerAliveInterval=30
其中user是跳板机上的用户名,jump-server-ip是跳板机公网IP。这条命令会后台运行,不占用当前终端,且每30秒发一次保活包防超时断连。
【关键注意:-R参数中的目标地址必须写127.0.0.1:22,不能写家里Mac的局域网IP(如192.168.1.100),否则跳板机无法将流量正确转回本机SSH服务】
验证是否成功:登录跳板机,执行ss -tlnp | grep ':6000',能看到*:6000正在监听,且进程为ssh:,说明隧道已建好。
在外网电脑上通过跳板机SSH访问家里Mac
你现在有两条路可走:
方法一:直连跳板机端口
在外网任意电脑(Mac/Windows/Linux)打开终端,执行:ssh -p 6000 localuser@jump-server-ip。
这里的localuser是你家里Mac上的用户名,不是跳板机的用户。
方法二:SSH Config简化连接(推荐长期使用)
在家里的Mac或外网电脑的~/.ssh/config里追加:
Host home-mac<br> HostName jump-server-ip<br> Port 6000<br> User localuser<br> IdentityFile ~/.ssh/id_rsa
保存后,外网终端只需输入ssh home-mac即可直连,无需记IP和端口。
首次连接会提示确认RSA密钥指纹,输入yes回车即可。之后每次连接都自动走隧道,全程加密,不暴露家里Mac的真实IP和端口。

















