You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS Sonoma下通过SSH访问钥匙串证书问题求助

解决macOS Sonoma SSH会话无法访问登录钥匙串的问题

核心原因

macOS Sonoma 强化了钥匙串访问控制策略,SSH远程会话默认不被授予登录钥匙串的访问权限,即便手动解锁也仅对当前会话生效,这是系统安全规则变更导致的兼容性问题。

解决方案

1. 为SSH进程授予钥匙串访问权限

  • 打开「钥匙串访问」应用,选中「登录」钥匙串
  • 右键点击「登录」钥匙串,选择「显示简介」
  • 切换到「访问控制」标签页,点击左下角锁图标解锁并输入密码
  • 在「允许控制此钥匙串的应用」列表中,点击「+」按钮,添加/usr/bin/ssh进程(若使用第三方OpenSSH,需添加对应路径如/usr/local/bin/ssh)
  • 若添加单个进程无效,可临时勾选「允许所有应用访问此钥匙串」测试,确认生效后再缩小权限范围
  • 重新锁定钥匙串并退出「钥匙串访问」

2. 配置SSH会话自动保持钥匙串解锁状态

如果权限设置后仍有问题,可通过SSH配置实现自动解锁:

  • 在用户目录下创建或编辑.ssh/rc文件,添加以下内容:
    # 自动解锁登录钥匙串
    security unlock-keychain -p "$YOUR_PASSWORD" "/Users/$USER/Library/Keychains/login.keychain-db"
    # 设置钥匙串超时为8小时(可按需调整时长,单位:秒)
    security set-keychain-settings -t 28800 -l "/Users/$USER/Library/Keychains/login.keychain-db"
    
    注意:直接明文写密码有安全风险,建议通过密钥管理工具或从无交互钥匙串中读取密码(需提前配置)。

3. 修复codesign权限报错

针对errSecInternalComponent错误,需给codesign授予证书访问权限:

  • 在「钥匙串访问」中找到对应的代码签名证书,右键选择「显示简介」
  • 切换到「访问控制」标签页,添加/usr/bin/codesign进程到允许列表
  • 若仍无效,可临时勾选「允许所有应用访问此项目」测试,后续再收紧权限

4. 使用独立测试钥匙串替代登录钥匙串

若不想修改登录钥匙串权限,可创建专用测试钥匙串:

  • 打开「钥匙串访问」,点击「文件」>「新建钥匙串」,命名为test.keychain-db并设置密码
  • 将测试所需证书导入该新钥匙串
  • 在SSH会话中设置环境变量指定使用此钥匙串:
    export KEYCHAIN=/Users/$USER/Library/Keychains/test.keychain-db
    security unlock-keychain -p "$TEST_KEYCHAIN_PASSWORD" $KEYCHAIN
    export CODESIGN_KEYCHAIN=$KEYCHAIN
    

验证方法

重新SSH连接Mac后,执行以下命令确认修复效果:

security list-keychains # 确认目标钥匙串已加载
codesign -v /path/to/your/test/app # 测试代码签名是否正常

内容的提问来源于stack exchange,提问作者muhammetkiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:32:15