向 ssh 显式指定身份文件时:
ssh -i ./id_rsa ...
Run Code Online (Sandbox Code Playgroud)
我在 ssh 调试跟踪中有这些行:
debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Run Code Online (Sandbox Code Playgroud)
这是否意味着 ssh 生成的也id_rsa包含公共 RSA 指数?id_rsa格式似乎相当明确,它包含带有“BEGIN PRIVATE KEY”块的私钥,因此“提供公钥”必须意味着“将公钥发送到服务器”以外的其他内容。
编辑:
为了澄清,我想知道“提供公钥”行背后到底发生了什么。如果客户端持有多个密钥,它们将一一提供给服务器。
cpb*_*lls 12
为了连接到 SSH 服务器并使用您的公钥/私钥对进行身份验证,您必须首先与服务器共享您的公钥。
这是通过将您的私钥的公钥复制到服务器,然后~/ssh/authorized_keys通过复制/粘贴、复制id_rsa.pub到~/.ssh/authorized_keys服务器或使用cat id_rsa.pub >> ~/.ssh/authorized_keys将其添加到列表中来完成的。
当您连接时,服务器使用您的公钥对挑战进行签名,您的客户端使用您的私钥id_rsa解密挑战,使用服务器的公钥重新加密host key并将其发回。
主机通过使用其私钥解密您的响应来验证您是否正确解密了质询,并且客户端/主机基于共享数据而不是您的公钥/私钥建立加密连接。
在交换中没有一点是您的私钥,或主机的私钥相互交换或透露。您的公钥存储在服务器上,但这就是它是公钥的原因。
| 归档时间: |
|
| 查看次数: |
6074 次 |
| 最近记录: |