在 Mac 上进行 Mac登陆 最常用的方法是终端(Terminal)。基本步骤:1)生成密钥:ssh-keygen -t rsa -b 4096;2)将公钥拷贝到远程:ssh-copy-id user@host 或手工追加到远程的 ~/.ssh/authorized_keys;3)登录:ssh user@host -p 22,必要时用 -i /path/to/key 指定私钥。注意私钥权限应为 chmod 600。可在 ~/.ssh/config 添加Host别名以简化连接。
对位于私有网络(NAT)后的主机,常用方法是路由器做端口映射(Port Forwarding),将外网端口(如 2222)映射到内网主机的 22 端口;或启用 UPnP/PCP 自动映射。若路由器不支持,另一个方案是把内网主机主动连接到有公网IP的中转服务器,再通过中转服务器转发(即反向隧道)。同时确认防火墙/ISP 未屏蔽该端口,使用非标准端口可减少被扫描的风险。
典型方案是内网主机主动 SSH 到一台有公网 IP 的中转服务器,并建立反向端口映射,例如:ssh -R 2222:localhost:22 user@public-server。执行后,公网服务器将监听 2222 端口,外部可以通过 ssh -p 2222 localhost(在公网服务器上)或直连 ssh -p 2222 user@public-server 来反向访问内网 SSH。为了稳定长期使用,可改用 autossh 自动重连,并在中转服务器上配置允许 GatewayPorts 或将映射绑定到公网地址。
建议使用 autossh 做持久连接:安装 autossh 后示例命令 autossh -M 0 -f -N -o "ServerAliveInterval=30" -o "ServerAliveCountMax=3" -R 2222:localhost:22 user@public-server。若服务器支持 systemd,可写 service 单元,配置 Restart=always、RestartSec=10,并使用密钥认证免密码登录。还可设置环境变量 AUTOSSH_GATETIME 防止频繁重启。确保 public-server 的 SSHD 配置允许 GatewayPorts 和 PermitTunnel(按需)。
排查时首先用 ssh -v 查看连接日志,确认端口映射、路由器转发、以及 public-server 的监听端口是否生效;查看 /var/log/auth.log 或 SSH 服务日志获取错误信息。安全方面:优先使用密钥认证并禁止密码登录,限制反向隧道绑定地址(只绑定到 localhost 或指定地址),在 authorized_keys 中使用 command=、from= 等限制公钥使用范围;定期更换密钥、使用非默认端口、配合 fail2ban/iptables 限制暴力攻击。另外注意 NAT 本身可能导致 hairpinning 问题,必要时在中转服务器上做跳板或使用 VPN/ZeroTier 等替代方案。