将公钥放进 authorized_keys
文件是因为 SSH 密钥认证的工作原理需要服务器验证客户端的身份。以下是具体原因:
1. SSH 密钥认证流程
SSH 密钥认证基于非对称加密,流程如下:
客户端向服务器发起连接请求。
服务器检查客户端的公钥是否存在于
~/.ssh/authorized_keys
文件中。如果存在,服务器生成一个随机数,用客户端的公钥加密,发送给客户端。
客户端使用自己的私钥解密随机数,并将结果返回给服务器。
服务器验证解密结果是否正确,正确则允许登录。
2. authorized_keys
文件的作用
存储公钥:
authorized_keys
文件存储了允许登录的用户公钥。身份验证:服务器通过检查客户端的公钥是否在
authorized_keys
中,判断是否允许登录。权限控制:只有公钥在
authorized_keys
中的客户端才能通过密钥认证登录。
3. 为什么必须放公钥
非对称加密特性:私钥用于签名和解密,公钥用于验证签名和加密。
服务器需要公钥:服务器无法直接访问客户端的私钥,只能通过公钥验证客户端的身份。
4. 总结
将公钥放进 authorized_keys
是因为服务器需要通过公钥验证客户端的身份,确保只有持有对应私钥的客户端才能登录。这是 SSH 密钥认证的核心机制。