macOS 中配置 SSH 密钥双重验证需使用 OpenSSH 8.2+ 的 AuthenticationMethods 指令强制 publickey,keyboard-interactive,结合 TOTP(如 google-authenticator)或 YubiKey 实现密钥+动态码/硬件认证。
在 macos 中配置 ssh 密钥双重验证,核心是组合使用“ssh 密钥认证”(第一因子)和“一次性密码(totp)或硬件密钥(如 yubikey)”(第二因子),而非单纯依赖密码+密钥。openssh 8.2+ 原生支持 authenticationmethods 指令,可强制多因子,无需额外 pam 模块。
启用 OpenSSH 服务并确认版本
macOS 自带 OpenSSH 服务,但默认不开启。需手动启用并验证版本是否 ≥ 8.2(推荐 macOS 12.3+ 或更新系统):
- 终端执行
sshd -V查看 OpenSSH 版本;若低于 8.2,建议升级系统或自行编译新版 OpenSSH - 启用远程登录:前往「系统设置 → 隐私与安全性 → 远程登录」,勾选启用(会自动启动
sshd) - 确认配置文件路径为
/etc/ssh/sshd_config,且有 root 权限可编辑
配置双因子认证策略
编辑 /etc/ssh/sshd_config,添加或修改以下关键行(注意取消注释并确保无拼写错误):
-
AuthenticationMethods publickey,keyboard-interactive—— 强制同时通过密钥 + 交互式验证(如 TOTP) -
PubkeyAuthentication yes和PasswordAuthentication no—— 禁用密码,只允密钥登录 -
KbdInteractiveAuthentication yes—— 启用键盘交互式认证(TOTP 所需) -
ChallengeResponseAuthentication yes(旧版兼容项,新版本中可省略)
保存后运行 sudo sshd -t 检查语法,再执行 sudo launchctl kickstart -k system/com.openssh.sshd 重载服务。
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
部署第二因子:以 TOTP 为例(无需额外服务器)
macOS 可借助开源工具 libpam-google-authenticator 实现本地 TOTP 验证:
- 用 Homebrew 安装:
brew install oath-toolkit(含oathtool)或直接编译google-authenticator-libpam - 为每个用户生成密钥:
google-authenticator -t -d -f -r 3 -R 30 -w 3(生成二维码、密钥及备用码) - 编辑
/etc/pam.d/sshd,在首行添加:auth [success=done new_authtok_reqd=done default=ignore] pam_google_authenticator.so nullok - 确保该 PAM 规则在
pam_opendirectory.so之前,否则可能被绕过
客户端连接时的正确用法
双因子启用后,普通 ssh user@host 会提示输入 TOTP 动态码(6 位数字),而非密码:
- 确保本地私钥已加载:
ssh-add -K ~/.ssh/id_rsa(macOS Keychain 集成) - 连接时,先通过密钥认证,紧接着提示
Verification code:—— 此时打开 Authy / Google Authenticator 输入当前码 - 如使用 YubiKey(U2F/FIDO2),需搭配
openssh-portable+libfido2编译,并在服务端启用PubkeyAcceptedAlgorithms +ssh-sk-ecdsa-sha2-nistp256@openssh.com
不复杂但容易忽略:每次更新 sshd_config 或 PAM 后务必测试新会话,切勿断开唯一连接,建议保留一个未关闭的 root shell 备用。

















