为什么在ssh客户端中用-i选项指定私钥?

为什么在ssh客户端中用-i选项指定私钥?

ssh man 中有这样的说法:

-i identity_file
             Selects a file from which the identity (private key) for public key authentication is read.  The default is
             ~/.ssh/identity for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and
             ~/.ssh/id_rsa for protocol version 2.  Identity files may also be specified on a per-host basis in the con‐
             figuration file.  It is possible to have multiple -i options (and multiple identities specified in configura‐
             tion files).  If no certificates have been explicitly specified by the CertificateFile directive, ssh will
             also try to load certificate information from the filename obtained by appending -cert.pub to identity file‐
             names.

它指出,身份文件是私钥。

但这不是违反了私钥保密的安全原则吗?

如果 ssh 通过网络传输密钥,则可能会受到损害。

我希望目标机器保留私钥,并检查传入用户的公钥。

我的理解有什么问题吗?

如果 ssh 通过网络发送私钥,那么它比仅使用密码有什么优势?

答案1

SSH 从不通过网络发送私钥。事实上,这是愚蠢的。

私钥仅用于回答来自目标主机的“挑战”,该“挑战”是使用相应的公钥生成的。在不拥有私钥的情况下回答挑战是出了名的困难,这使得这种通信变得安全,因为你不能通过猜测来破坏它(在可接受的时间范围内)。蛮力。

相关内容