macos配置ssh免密登录的关键是用ed25519密钥对替代密码验证:先开启远程登录服务,再生成密钥对,最后手动部署公钥并严格设置~/.ssh权限为700、authorized_keys为600。
macos 配置 ssh 免密码登录,关键不是“跳过验证”,而是用密钥对替代密码验证。整个过程不依赖第三方软件,系统自带工具就能完成,核心就三件事:开启远程登录服务、生成 ed25519 密钥对、手动把公钥部署到目标 mac 并设对权限。
开启远程登录服务
macOS 默认关闭 SSH 服务(sshd),不启用就无法响应任何密钥请求。
- 打开「系统设置」→「通用」→「共享」,勾选「远程登录」
- 右侧会显示类似 ssh user@192.168.x.x 的提示,说明服务已运行
- 点击右侧「信息」图标 → 选择「仅这些用户」,勾选你要登录的账户(别选“所有用户”)
- 若防火墙开启,进入「防火墙」→「防火墙选项」,确认未阻止 sshd(端口 22)
生成本地 Ed25519 密钥对
Ed25519 比 RSA 更快更安全,macOS 12+ 原生支持,是当前推荐标准。
- 打开终端,执行:ssh-keygen -t ed25519 -C "me@mac.local"
- 路径直接回车,默认保存为 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)
- 建议输入 passphrase(密码短语),防止私钥文件泄露后被直接使用
- 如需后续自动填充 passphrase,运行:ssh-add --apple-use-keychain ~/.ssh/id_ed25519,首次会提示存入钥匙串
手动部署公钥到远程 Mac
避免 ssh-copy-id 在 macOS Sonoma 及更新版本中因 shell 或权限问题失败,手动操作更可控、更可靠。
- 查看并复制公钥内容:cat ~/.ssh/id_ed25519.pub,全选整行(注意不要多空格、少字符)
- 用密码方式登录一次远程主机:ssh user@192.168.x.x
- 在远程终端依次执行(顺序不能错):
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys - 特别注意:~/.ssh 目录权限不能高于 700,authorized_keys 文件不能高于 600,否则 sshd 会静默拒绝认证
测试与可选加固
退出当前会话,在本地终端运行:
- 测试连接:ssh -o LogLevel=INFO user@192.168.x.x,日志能清晰指出卡在哪一步
- 成功免密后,如需禁用密码登录(提升安全性),编辑 /etc/ssh/sshd_config,确保:
PubkeyAuthentication yes
PasswordAuthentication no - 然后验证配置语法:sudo sshd -t
重启服务:sudo launchctl kickstart -k system/com.openssh.sshd











