macOS启用SSH需三步加固:启用服务并限制用户、强制密钥认证禁用密码、集成TOTP双因素;所有SSH协议访问(含sftp/sshfs)自动继承该安全策略。

macOS 默认不开启 SSH 服务,安全访问的前提是先启用并加固它——核心不是“连得上”,而是“只让该连的人、用该用的方式连”。关键动作集中在三块:服务启用与访问控制、密钥认证替代密码、双因素增强登录环节。
启用 SSH 并严格限制可访问用户
打开「系统设置」→「通用」→「共享」,勾选「远程登录」。此时下方会显示类似 ssh user@192.168.1.100 的连接提示,说明服务已运行。
点击右侧 ⓘ 图标,不要选“所有用户”。应手动勾选具体账户(如你的管理员账号),避免任意本地用户都可通过 SSH 登录。企业或多人共用设备时,这点尤为关键。
若使用 macOS Server 或管理工具,还需确认「服务器 App」中未额外禁用 SSH;同时检查「隐私与安全性」→「防火墙」→「防火墙选项」,确保 /usr/sbin/sshd 或端口 22 已被允许。
强制使用 SSH 密钥,禁用密码登录
密码易被暴力破解或重放,必须关闭。编辑 /etc/ssh/sshd_config(需 sudo 权限),确认以下三行已启用且无注释:
- PubkeyAuthentication yes
- PasswordAuthentication no
- PermitEmptyPasswords no
保存后重启服务:sudo launchctl kickstart -k system/com.openssh.sshd。
在本地生成密钥对:ssh-keygen -t ed25519 -a 100 -C "me@mac.local"。务必为私钥设置密码短语(passphrase),防止私钥泄露即失守。
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
手动将公钥部署到 Mac:
先用密码登录一次 → 执行 mkdir -p ~/.ssh && chmod 700 ~/.ssh → echo "公钥内容" >> ~/.ssh/authorized_keys → 立即执行 chmod 600 ~/.ssh/authorized_keys。权限错误(如 755 或 644)会导致静默拒绝,这是最常见的失败原因。
添加 TOTP 双因素认证(2FA)
仅密钥仍属单因素。要实现真正二次验证,需集成时间动态口令:
- 安装 PAM 模块:brew install google-authenticator-libpam
- 以目标用户身份运行:google-authenticator,按提示启用时间令牌、禁止单次重用,并备份恢复码
- 编辑 /etc/pam.d/sshd,在文件最上方插入:
auth [success=done new_authtok_reqd=done default=ignore] pam_google_authenticator.so - 再次检查 sshd_config,确保启用:
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
重启 sshd 后,每次 SSH、sftp 或 sshfs 连接都会先验密钥,再弹出六位动态码输入提示——双重保障落地在协议层,不依赖客户端或挂载工具额外配置。
远程磁盘访问自动继承安全策略
很多人误以为“远程磁盘”需要单独设防,其实只要 SSH 登录本身启用了密钥+2FA,所有走 SSH 协议的访问(包括 sftp、scp、sshfs)都天然受保护。
例如挂载远程目录:
sshfs user@192.168.1.100:/Users/user/Documents ~/mnt -o allow_other,defer_permissions
执行时会先触发密钥认证,再要求输入 TOTP 动态码。整个过程无需改写脚本或加额外参数,安全由底层 SSH 通道统一承载。
不复杂但容易忽略。

















