为啥 macOS 非应用市场安装的应用可以读取 .ssh 目录下的密钥

47 天前
 PqgpNgA0wk

起因是试用了下腾讯出的 ugit,然后在设置界面里看到了本机 ssh 密钥列表,这是不是意味着非应用市场安装的应用可以在没有全盘读取权限时也能读取到这些私密文件,莫非 config 文件也能读,感觉不太好了..

2000 次点击
所在节点    macOS
15 条回复
moudy
47 天前
这就是最传统的可执行程序的逻辑啊
dilidilid
47 天前
不然呢,你的.ssh 目录就是用户可读的权限呀。所以一概建议重要设备上的 ssh 密钥加上 passphrase ,然后每次启动之后 ssh-add 进去。如果嫌麻烦可以加到 keychain 里去自动挂载
huoshen
47 天前
@dilidilid 请问 keychain 自动挂载是什么意思?
DIMOJANG
47 天前
bao3
47 天前
你放在 home 目录下的文件,不就是要供你自己打开程序来读取嘛。不光能读 .ssh , 那些什么 .bashrc ,.zshrc 以及什么 documents 、downloads 都可以读。
简单来说,你要确保你打开的程序是可信的。
Irilsy
47 天前
建议在生成 key 的时候设置密码( passphrase),然后用 `ssh-add --apple-use-keychain` 存进 icloud keychain ,每次开机的时候 `ssh-add --apple-load-keychain` 把所有的 passphrase 导入 ssh-agent 中就行,这时候 passphrase 都是保存在内存中的了,不怕读取了,app 能读到的私钥都是加密的。
lovestudykid
47 天前
搞不太懂苹果的权限逻辑,好像对 Documents/Downloads 这些文件夹有额外的权限
dilidilid
47 天前
@lovestudykid 可能在苹果看来这些 User Folders 属于普通用户会使用的文件夹需要专门保护一下,.ssh 则属于 Pro 用户才会使用的东西,Pro 用户应该自己对这些组件的安全性负责。

另外从 Application 的层次这东西也很难保护,你总得给 Terminal 整个 Home 目录甚至全盘的权限很多 workflow 才能正常运行,给了 Terminal 权限等于所有的脚本和命令行程序都能访问,那也没啥区别呀
ihciah
47 天前
用 secretive ,私钥放硬件里提不出来,只签名
ZE3kr
47 天前
1Password 的话可以这个 https://developer.1password.com/docs/ssh/
ZE3kr
47 天前
也不是,非 App Store 开发者也可以选择开启 sandbox ,开 sandbox 后本质上就跟 iOS Apps 一样隔离了;只不过开发者可以选择不开。App Store 一般情况得开 sandbox
niubee1
47 天前
HOME/.ssh 并没有什么特殊权限,你登陆的账号就有权限访问,而你在当前 Session 打开的应用,那不天然就是这个登陆帐号启动的,那不是天然就有权限咯。
paopaosa
47 天前
不上架的 app ,不需要开沙盒模式,用户目录下的东西随便读写。
PqgpNgA0wk
47 天前
@dilidilid @DIMOJANG @bao3 @Irilsy @ihciah @ZE3kr 感谢大家的科普和建议,我这就去研究研究 [抱拳]
zhyim
46 天前
.ssh 属于用户,安装的软件也属于用户,他俩同级的当然可以访问了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1087897

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX