V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Admstor
V2EX  ›  SSH

我不理解几乎所有 SSH 加固都提到配置公钥

  •  
  •   Admstor · 3 天前 · 5801 次点击
    我理解公钥私钥只是一个更加复杂的密码

    倘若我本身密码就是 16 位以上大小写英文数字符号混合,并且每个服务器密码均随机生成不一样
    并且我开启了 auto-ban 之类的服务,防止穷举猜测密码

    那是否可以认为安全性是接近的
    特别如果是私钥泄露意味你几乎所有服务器等于密码泄露,难道是每个服务器私钥都不一样?
    第 1 条附言  ·  3 天前
    我发现一些 V2er 总是想当然的嘲讽 16 位密码太弱,但是实际上只计算大小写英文+数字,组合就有 62 的 16 次方,这本身就是天文数字,私钥确实在密码复杂度上更加夸张,但是无论哪一个几乎都可以说在现实中不具备被暴力破解的意义,更多的是出现在密码更加容易泄露,私钥交换过程更安全这样的因素上。

    那么到底为何更安全,也没几个人说得清楚
    第 2 条附言  ·  1 天前
    首先我只管理我自己的若干服务器和若干服务
    SSH 可以用密钥,可是有更多的地方也只支持密码

    我的密码是随机生成 8-20 位,视安全级别而定,比如国内很多账号无论你密码是怎样都会要求附加短信验证码,那就随便一个 8 位就好了

    再说我肯定是密码管理器来管理所有的密码,我也在主题里说过了,密码是随机生成不具备任何意义

    回复的里面有很多从性能开销,握手过程解释密钥的安全程度更高,我表示确实有一定的道理,但是就我这种单人使用的情况,我依然觉得我使用随机密码随机端口足够保障我服务器的安全。相比较可能 SSH 本身漏洞,或者我运行的其他 web 应用漏洞导致服务器被入侵的机会更大。

    从公司,以及多人合作模式,密钥确实更加的方便安全
    113 条回复    2026-02-07 05:49:29 +08:00
    1  2  
    wy315700
        101
    wy315700  
       3 天前
    @ryd994 #100

    CHAP 的缺点也很明显,就是服务器必须明文存储密码,而不能存储密码的哈希。
    WuSiYu
        102
    WuSiYu  
       3 天前   ❤️ 1
    这楼给我越看越迷惑了

    首先无论你是用密码还是公私钥,只是认证方式的区别,ssh 本身通信都是走的非对称加密

    有一个区别是私钥永远不会离开你的电脑,而密码登录时服务器能拿到你的密码明文,但除非 1.服务器本身被攻陷,或者 2.你首次连接的就是中间人攻击的假服务器,否则也没什么安全问题:ssh 的通信本身是非对称加密的,捕获流量无法解密你的密码,被中间人攻击时也会因为和.ssh/known_hosts 里存过的 key 不一致而报错

    剩下的就是密码强度问题了,理论上你的用足够长的随机字符密码也是安全的,但 16 位依然弱一些,并且如果不是纯随机密码还会导致强度进一步下降。而记住一个足够长还足够随机的密码可比配一下公私钥麻烦多了,还有就是私钥本身也是可以再加密码的
    yazinnnn0
        103
    yazinnnn0  
       2 天前
    当然是每台电脑上的私钥都不一样了
    tool2dx
        104
    tool2dx  
       2 天前
    我一直用强密码+改端口, 就是图省事. 有 fail2ban 存在, 我并不担心密码被暴力穷举, 未来不好说, 现阶段挺安全的.
    laydown
        105
    laydown  
       2 天前
    如果只用密钥登录的方式,我换一台不熟悉的电脑的话,是不是就很不方便了?不知道大家是怎么解决的呢?
    z7356995
        106
    z7356995  
       2 天前 via Android
    输入 16 位密码也麻烦呀,密钥配置好后就直接登录了
    est
        107
    est  
       2 天前   ❤️ 1
    @WuSiYu ssh 通信本身是对称加密的。比如 AES ChaCha20 。

    auth 的时候可以选择是密码还是 RSA 或者 Ed25519
    restkhz
        108
    restkhz  
       2 天前   ❤️ 1
    楼上的一些 v2er ,我只是提醒一下,
    不管是 TLS 还是 SSH 都不是非对加密
    这也不是对称加密和非对称加密的区别,而是利用公钥密码学的另一种身份验证方法。

    这里无论你是 RSA 还是 ed25519 ,还是 OP 的 16 位密码,都只是在做身份验证而已。
    通信加密早就完成了。而且用的是对称加密。和上面说的 RSA, 16 位密码都没有关系。

    “非对称加密”这个词本身就有误导性。实际上 RSA 很少用于加密通讯内容,PGP 都没有用 RSA 加密邮件内容。而 ed25519 甚至本身就不具备任何加密解密能力。

    验证身份本身就有很多方法,无论你是密码,公钥,还是 TOTP ,都在不同场景有不同的优势。

    我觉得 OP 问的问题是好问题。他的确有好的理由质疑,而且发表质疑需要勇气。
    esee
        109
    esee  
       2 天前
    你自己设置的密码是毫无语义的话那你怎么记住,你能记住的密码大概率是有语义的那能被爆破或者撞库的可能性就高很多。如果你能做到毫无语义,密码只在该服务器使用不会在其他站点第三方使用一样的,那我觉得你说的也可行,至于评论区那些说 20 位的 和 1000 位密码的 破解强度不一样,那也没错,但是穷举 20 位包括大小写数字符号 的 如果要上百年,穷举 1000 位的要上亿年,那对于一个人的生命长度来说其实也没啥区别
    WuSiYu
        110
    WuSiYu  
       2 天前
    @est 我知道,我没表达清楚,我的意思是 ssh 本身通信是 ssl/tls 这套,安全性是一开始的非对称加密保证的
    est
        111
    est  
       1 天前
    @WuSiYu 其实有一点我也是今天问了 AI 才知道的。。ssh 和 tls 似乎不太一样。。那个非对称的 key 不是拿来加密的。。。。ssh 的握手跟你是否有 key 无关。
    ryd994
        112
    ryd994  
       1 天前 via Android
    @laydown #105 看我楼上说的。我用 cloudflare tunnel 。
    1. 解决了鉴权的问题
    2. 不需要开放端口
    3. 有 web 客户端

    对于个人使用来说是足够了
    restkhz
        113
    restkhz  
       10 小时 26 分钟前   ❤️ 1
    @est 看你博客很久了:)

    其实 TLS 也不用非对称的 key 加密,只是验证身份。通信都用对称加密比如 chacha20, aes 这类对称加密。因为能用 DH 做密钥交换,DH 密钥交换确定的密钥经过处理后才作为通信时对称加密的 key.

    TLS1.2 有用过 RSA 做过密钥交换(加密传递生成密钥的参数)但是不够安全,几乎不用。

    RSA 其实问题很多,上面这种情况没 PFS,而且 RSA 加密消息长度很有限,计算还慢,还有 Bleichenbacher 问题。

    我上一个回复说到的 PGP 中其实 RSA 负责的是身份验证,和密钥传递。密钥?什么密钥?对称加密的密钥。邮件到底还是 AES 这类对称加密的。

    TLS1.2 密钥交换时同时服务器发证书,证书不对,直接放弃握手,密钥还没协商完。
    TLS1.3 更像 SSH ,先加密再发证书。只不过为了效率尽可能减少了来回通信,而且因为证书被加密就不怕证书 SNI 泄漏问题。

    但是 TLS 和 SSH 依旧是两码事。

    在上述所有场景中,公钥密码学仅仅是为了身份验证,为了防止 MITM, 而且几乎不参与加密。
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2214 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:15 · PVG 16:15 · LAX 00:15 · JFK 03:15
    ♥ Do have faith in what you're doing.