每次连服务器都要敲密码,既繁琐又是攻击面。SSH 公钥认证用一对密钥替代密码:本地保留私钥,服务器只存公钥,登录时由客户端自动完成挑战响应,不再需要人工输入任何东西。配好之后不仅能免密登录,更重要的是可以关掉密码登录,直接消除暴力破解这条最常见的外部攻击路径。
公钥认证是怎么工作的理解原理能帮你排错,而不是机械照抄命令。
SSH 公钥认证基于非对称加密。本地有一对密钥,比如 id_ed25519(私钥)和 id_ed25519.pub(公钥)。私钥永远不离开你的机器,公钥可以随便分发。
登录时,服务器用你预先放上去的公钥发起一个数学挑战,只有持有对应私钥的人才能正确应答。整个过程不传输任何密码,服务器也不需要存储任何密码信息。认证通过后直接拿到 shell。
服务器怎么知道用哪个公钥来挑战你?靠 ~/.ssh/authorized_keys 文件。这个文件里每一行是一个公钥,服务器逐行尝试,匹配上你本地私钥的就生效。所以”部署公钥”的本质就是把公钥追加到这个文件里。
权限是这个机制里最容易踩坑的地方。sshd 对权限极其敏感,如果 ~/.ssh 或 authorized_keys 对其 ...


