如何告诉 SFTP 使用哪个公钥?

如何告诉 SFTP 使用哪个公钥?

SFTP 有一个选项“-i”,用于设置用于公钥认证的私钥。但是,似乎没有用于使用哪个匹配公钥的选项。当然,它必须需要这个来告诉服务器要使用哪个公钥进行质询。

为什么会这样以及它是如何工作的?

答案1

首先,“私钥”文件包含密钥的所有部分。包括公钥和私钥部分。如果删除公钥的本地副本,您只需从包含私钥的文件重新创建它即可。您可以使用 查看 RSA 密钥的所有内容。openssl rsa -in filename.id_rsa -text因此,当您拥有私钥时,您实际上永远不需要识别密钥对的“公钥”部分。私钥包含所有信息。

至于服务器对客户端进行身份验证。服务器不会根据公钥加密某些内容。相反,客户端会发送一些信息,其中包含签名由私钥签名。服务器可以使用其已知的公钥来验证这一点。

https://www.rfc-editor.org/rfc/rfc4252

   To perform actual authentication, the client MAY then send a
   signature generated using the private key.  The client MAY send the
   signature directly without first verifying whether the key is
   acceptable.  The signature is sent using the following packet:

      byte      SSH_MSG_USERAUTH_REQUEST
      string    user name
      string    service name
      string    "publickey"
      boolean   TRUE
      string    public key algorithm name
      string    public key to be used for authentication
      string    signature

   The value of 'signature' is a signature by the corresponding private
   key over the following data, in the following order:

      string    session identifier
      byte      SSH_MSG_USERAUTH_REQUEST
      string    user name
      string    service name
      string    "publickey"
      boolean   TRUE
      string    public key algorithm name
      string    public key to be used for authentication

答案2

要使用的公钥是在所连接服务器上的用户帐户的 authorized_keys 文件中设置的。它不在客户端中设置。

https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process

是一篇很好的文章,可以了解其工作原理。

相关内容