mac默认ssh仅限局域网访问,需通过cpolar或frp实现公网穿透;必须禁用密码登录、启用密钥认证,并开启防火墙阻止未授权入站连接。

Mac本地SSH服务默认只响应局域网请求,想在公司、咖啡馆或旅途中用手机或另一台电脑远程连接这台Mac,必须让它的22端口能被公网访问——但你没有公网IP,路由器也不支持端口映射,更不想把Mac直接暴露在扫描器眼皮底下。
确认Mac的SSH服务已启用并允许远程登录
打开“系统设置”→“通用”→“共享”,勾选“远程登录”。此时界面会显示类似 【administrator@MacBook-Pro.local】 的地址,这是局域网内可用的主机名,但外网无法解析它。
注意:若未看到“远程登录”选项,请先点击左下角锁形图标解锁设置;若勾选后仍无法连接,需在终端执行 sudo systemsetup -setremotelogin on 强制开启。
验证SSH是否真正监听在所有接口:在终端运行 sudo lsof -iTCP:22 -sTCP:LISTEN。若输出中出现 127.0.0.1:22 但没有 *:22 或 ::*:22,说明服务仅绑定本地回环,需修改 /etc/ssh/sshd_config 中的 ListenAddress 行,注释掉或改为 ListenAddress 0.0.0.0,然后执行 sudo launchctl kickstart -k system/com.openssh.sshd 重启服务。
方法一:用cpolar一键映射(推荐新手)
第一步:安装cpolar。打开终端,依次执行:
brew tap probezy/core → brew install cpolar
第二步:注册cpolar账号(www.cpolar.com),登录后台,在“预留”页申请一个固定TCP端口(如描述填“mac-ssh”,地区选China),获得形如 【2.tcp.cpolar.cn:14523】 的地址。
第三步:将authtoken写入本地配置。在终端运行:cpolar authtoken your_authtoken_here(把your_authtoken_here替换成官网个人中心复制的完整token)。
第四步:启动隧道:cpolar tcp --remote-addr 2.tcp.cpolar.cn:14523 22。终端将返回包含公网地址和在线状态的提示,此时隧道已建立。
第五步:从外网连接。在另一台设备终端执行:ssh -p 14523 username@2.tcp.cpolar.cn(username为你Mac的系统用户名,非Apple ID)。首次连接会提示确认密钥指纹,输入yes即可。
方法二:用frp自建穿透(适合有云服务器者)
frp需要两段配置:服务端(部署在你拥有的公网VPS上)、客户端(Mac本机)。此处仅列Mac端关键操作,服务端部署请参考其官方文档完成基础搭建与端口开放。
方法二·步骤一:下载frp macOS客户端。前往 GitHub Releases页面,下载最新版 frp_*.darwin_arm64.tar.gz(M系列芯片)或 frp_*.darwin_amd64.tar.gz(Intel芯片)。
方法二·步骤二:解压后进入目录,编辑 frpc.ini 文件,写入以下内容(替换server_addr为你的VPS公网IP,server_port为服务端bind_port值,token为服务端配置的token):
[common]server_addr = your_vps_ipserver_port = 28084token = Kfy1XzGDIb13CFpWdQ0vffzTsu4tOIo0q011yblHFhyBf7Sd1Sx4VOY1ceXovc1jyvQh91pwOu9PSXYVM3t9DBu218GEc1y30d1271bf6iA040Hz2W113Ny781h09Rr1[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 60022
方法二·步骤三:赋予执行权限并运行:chmod +x frpc → ./frpc -c frpc.ini。终端输出“login success”即表示连接成功,此时可从任意外网设备通过 ssh -p 60022 username@your_vps_ip 访问Mac。
注意:【remote_port必须是服务端vhost_tcp_port或bind_port范围内的可用端口,且不能与其他frp服务冲突】。
安全加固关键动作(必须做)
无论用cpolar还是frp,Mac的SSH服务一旦暴露,就必须关闭密码登录,仅保留密钥认证。在Mac终端执行:
sudo nano /etc/ssh/sshd_config,找到 PasswordAuthentication yes 改为 PasswordAuthentication no,再找到 PermitRootLogin yes 改为 PermitRootLogin no,保存后执行 sudo launchctl kickstart -k system/com.openssh.sshd 重载配置。
确保你的Mac用户已生成并部署了SSH密钥对,且公钥已写入 ~/.ssh/authorized_keys。未完成此步就关闭密码登录,将导致彻底无法登录。
最后,在Mac“系统设置”→“隐私与安全性”→“防火墙”中,确认防火墙已开启,并点击“防火墙选项”→勾选“阻止所有传入连接”——frp或cpolar的隧道流量走的是出站连接,不受此阻挡,但能有效拦截其他未授权的入站扫描。











