如题,题主对网络攻防完全外行,只是从日常使用中感觉是这样。
|      1gtgc2005      2022-08-19 10:52:03 +08:00 日常不建议用 root 用户操作,非 root 权限无法操作 /root 目录 | 
|  |      2haozi1986      2022-08-19 10:52:52 +08:00 难道你没设置文件权限?…… | 
|      3jurassic2long OP | 
|  |      4leavic      2022-08-19 11:02:56 +08:00 安全的是可以防止弱密码,如果 key 随便丢,那和用 123456 做密码一样。 | 
|      5jurassic2long OP @leavic 不是随便丢,就是再它原来的位置,只是觉得什么软件都能去读它。 | 
|  |      6liuxey      2022-08-19 11:06:11 +08:00 是这样子的,自从给.ssh 文件夹上了监控,发现不少软件会读这个文件夹。 | 
|      7zhzy0077      2022-08-19 11:06:26 +08:00 1. 私钥是可以上密码的 2. 密码验证会被中间人,密钥不会 3. 2048 bit 的 RSA 密钥*大概*相当于 log64(2^2048) = 341 长度的随机密码 | 
|      8jurassic2long OP 如果我是攻击者,我会写个有点用又看起来人畜无害的小程序,然后悄悄去扫~/.ssh  再进一步说,xshell 、putty 等类似的软件是不是掌握了巨量的密码、密钥,想想就不太安全 | 
|      9yfugibr      2022-08-19 11:08:21 +08:00 via Android  4 ssh 密钥是可以设置密码也推荐设置密码的。 我理解 ssh 密钥是为了增强安全性(防止直接爆破服务器),而不是简化操作(无密码登录,如果可以保证本地设备安全的话,确实可以这么干) | 
|      10jurassic2long OP @zhzy0077 确实,我一直用无密码的密钥,都忘记可以上密码这茬了,感觉这个习惯不好。。 | 
|      11jurassic2long OP @yfugibr 嗯嗯 这么理解感觉就通顺了 | 
|  |      12singerll      2022-08-19 11:21:19 +08:00 via Android 说他安全主要是说的服务端,没说客户端比较安全。 | 
|  |      14Felldeadbird      2022-08-19 11:57:00 +08:00 我认为这么理解。 1. 你有私钥,你登录目标服务器,只有你可以登录。 2.你登录后,在服务器乱装软件,软件权限还给得很高。软件把服务器 IP 和~/.ssh 的密钥搞下来了。 3. 你私钥泄露了。任何人都可以访问了。 | 
|  |      15momocraft      2022-08-19 12:13:34 +08:00 不要执行你不相信的软件 | 
|  |      16AoEiuV020CN      2022-08-19 12:21:48 +08:00 正常.ssh 放的不是当前 linux 的登录私钥, linux 桌面用户少,.ssh 存放了服务器私钥的 linux 桌面用户更少,在这基础上还乱运行闭源未知软件的用户就更更少了, 楼主说的确实有可能,但考虑用户量,就算真有人开发针对这些人病毒木马,感觉也未必能收回成本, | 
|  |      17wtsamuel      2022-08-19 12:30:20 +08:00 你不信任的软件就应该丢进虚拟机里 | 
|  |      18estk      2022-08-19 12:49:35 +08:00 任意路径不都是强制 chmod 600 才允许使用吗? | 
|  |      19luxor      2022-08-19 12:58:46 +08:00 authorized_keys 是公钥 | 
|      20nightwitch      2022-08-19 13:04:49 +08:00 服务端~/.ssh 不会放私钥,只会放公钥。 如果你说的是自己桌面端~/.ssh 的私钥,ssh 提供加密的功能。 | 
|  |      21ryanbuu      2022-08-19 13:04:50 +08:00 authorized_keys 放的是可以用来登录的私钥对应的公钥,泄漏其实也无妨,况且目录和文件都是 0600 权限的 | 
|  |      22tool2d      2022-08-19 13:11:22 +08:00 “不用 root ,有权限,但是用户自身的账号权限也能读取呀;” 我看了一眼服务器,并不是。 .ssh 目录默认只能 root 用户自己读取,除非你改过授权了。 | 
|  |      23heyjei      2022-08-19 13:14:19 +08:00  1 @jurassic2long 是的,很早之前百度有一个软件中心,专门提供各种软件的下载,就和 360 软件库一样。然后他里面的 Putty 就被加了木马,所有使用过这个版本 putty 的用户,登陆信息全被上传到一个服务器。 事发后,rj.baidu.com 这个域名直接被取消解析。百度软件中心这个产品一夜之间被砍。 | 
|  |      244BVL25L90W260T9U      2022-08-19 13:15:38 +08:00 前两天不是刚有个讨论 chrome 在本地明文存储密码的?本地明文才是常态啊…… | 
|  |      25xzysaber      2022-08-19 13:16:35 +08:00 你确定那是私钥吗? | 
|  |      26felixcode      2022-08-19 13:23:32 +08:00 via Android 你不知道 chmod 600 设置权限吗? | 
|      28mangoDB      2022-08-19 13:47:50 +08:00 目录权限 | 
|      29forbreak      2022-08-19 14:01:25 +08:00 你.ssh 目录都被人 copy 走了。那你还谈什么安全? 安全是防中间过程。 | 
|      30yohn89      2022-08-19 14:27:50 +08:00 你把车钥匙锁在你家保险箱里面,你的保险箱被小偷进来偷走了,然后你说车钥匙不安全? | 
|  |      31duanxianze      2022-08-19 14:40:07 +08:00 你对安全的理解有错误,能接触到物理实机的情况下大多数安全措施都没意义了,防的是网络攻击 | 
|      32nu11ptr      2022-08-19 15:26:20 +08:00 ~/.ssh 下的私钥如果不是 600 权限,会报错 确实相同用户权限就能访问,最好在创建密钥时额外设置密码 | 
|  |      33ch2      2022-08-19 17:00:17 +08:00 有了你的私钥,知道你这个私钥能在哪用吗 | 
|  |      34bleaker      2022-08-19 17:03:22 +08:00 黑客知道了我的私钥,可以 ssh 到我电脑上帮我修 bug 吗。。 | 
|      35halberd      2022-08-19 18:15:13 +08:00 私钥加 passphrase 如果嫌每次都要输 passphrase 麻烦,可以用 ssh-agent 记住密码,这样唯一风险在于被读 ssh-agent 的内存,但那就需要 root 权限了。 | 
|      36GHvyuR7N      2022-08-19 18:21:37 +08:00 via iPhone 密钥登录普通账户,想 sudo 提权老老实实输入密码... | 
|  |      37wonderfulcxm      2022-08-19 18:24:00 +08:00 via iPhone 安全是相对的,跟别的普通文件区别不过是权限限定 600 ,只能保证其他用户无法读写,无法保证以你身份执行应用的扫描。 不过 mac 好像有个功能,应用要读写某个目录,会弹出一个提示问是否允许。 | 
|  |      38yp965FjL630VP3s2      2022-08-19 18:25:27 +08:00 不安全,user 用户安装的软件,绝大多数的所有者都是 user 本身,这意味着软件想要访问家目录下的.ssh 文件夹不会有任何权限问题。所以私钥一定要设置密码,并且不要运行来历不明的软件。 | 
|      39pingdog      2022-08-19 19:01:33 +08:00 via Android DAC 限制不到,要上 MAC 级别的功能 可以买商业解决方案 也可以用 NSA 开发及众多组织和个人参与贡献在 kernel 的 selinux 🌚 我为什么要强调 NSA ?因为遇到很多一听到这个缩写都是闻风丧胆,需求立马砍掉或购买商业解决方案 selinux 建议吃透概念并自行配置,CTRL C V 大概率会导致服务器失联 | 
|  |      40panzhc      2022-08-20 10:53:47 +08:00 很多人都没有看懂 OP 的问题,其实我也一直有一样的担心,目前想到的办法也就是: 1. 给密钥加密码; 2. 服务器 2FA ; 3. 目前主要用 Linux 办公,常用软件都是开源的,没有 XX ,涉及到各种 IM 软件都在 Mac 上; 4. 做个虚拟机或者其他机器当作跳板,key 放在跳板上。 | 
|  |      41panzhc      2022-08-20 10:56:25 +08:00 另外,有段时间还给服务器设置了登录通知,也可以记录到数据库,但是通知太多就没怎么看了。 | 
|      42endle      2022-08-21 04:05:26 +08:00  2 在讨论安全的时候,是要有一些假设的。把私钥存储在 ~/.ssh 下,要假设本机是安全的。 如果你怀疑你当前使用的机器已经被挂了木马或是恶意软件,~/.ssh 被未经你允许的软件读取了,那无论是用密码还是密钥对登录,都是不安全的行为。 | 
|      43julyclyde      2022-08-22 13:41:28 +08:00 能读.ssh 目录的程序,不是以你自己的身份,就是以更高的 root 身份运行的 谁运行谁负责 | 
|      44justaname      2023-01-03 17:29:01 +08:00 @panzhc 感觉强密码就够了吧,让 ssh-agent 记住密码的话也只需要输入一次,普通程序能读取 ssh-agent 的内部信息的话整个安全体系就已经形同虚设了吧 | 
|      45liuidetmks      2024-03-11 19:15:28 +08:00 @justaname 普通程序就是能读取 ssh-agent 啊, 不然 git 是怎么读取的,用 gpt 问了下,直接就能遍历私钥,只是比读取文件稍微多了一些代码 // 遍历私钥 LIBSSH2_AGENT_PUBLICKEY* identity; while ((identity = libssh2_agent_get_identity(identities, 0)) != NULL) { // 在这里可以使用 identity 中的信息,如 identity->comment 和 identity->blob // 例如,你可以打印私钥的注释信息 printf("Private Key Comment: %s\n", identity->comment); } | 
|      46dilidilid      202 天前 @liuidetmks  这是 GPT 的回答 Yes — common programs without sudo can read SSH private keys from ssh-agent, but not the private keys themselves — instead, they get access to the ability to sign on your behalf via the agent. ❌ What they cannot do: • Extract or dump the actual private key. • Access the agent from another user (unless you explicitly share the agent socket via file permissions — not recommended). ssh-agent 是不可能直接暴露私钥给普通程序的,程序只能请求 agent 帮它签名从而完成鉴权过程,不然这个机制不成了脱裤子放屁了吗 | 
|      47dilidilid      202 天前 @liuidetmks 看起来你的这个程序只是 print 出来了 identity 里面的 comment ,不是 key 本身呀 |