假设我已经在 ssh 中设置了公钥/私钥身份验证。
ssh 服务器拥有公钥但不拥有私钥,而 ssh 客户端同时拥有公钥和私钥,这是否正确?
通过 ssh 协议进行通信时如何使用公钥和私钥?
当我在 ssh 客户端通过运行命令通过 ssh 协议连接到 ssh 服务器来启动通信时,从我到服务器的初始消息是用公钥还是私钥加密的?
当ssh服务器收到这个初始消息时,它是否使用公钥来解密初始消息,这听起来很奇怪,因为每个人都可以拥有公钥,从而可以解密初始消息?
如果我发送连接到服务器的命令是将服务器上的某个文件 scp 到我的本地主机,那么当 ssh 服务器将请求的文件发送给我时,公钥是否用于加密该文件?
当ssh客户端收到加密文件时,是否使用私钥来解密该文件?
公钥和私钥是否仅在身份验证期间使用,而不是在身份验证完成后使用?
如果这是正确的,那么在身份验证后,是否会对要发送的消息进行某种类型的加密,并对接收到的消息进行解密,以用于 ssh 服务器和客户端之间的通信?
谢谢。
答案1
- ssh 服务器拥有公钥但不拥有私钥,而 ssh 客户端同时拥有公钥和私钥,这是否正确?
是的,如果你谈论认证密钥。还有主机密钥,其中所有权是相反的——服务器拥有两者,而客户端只有公钥。
- 当我在 ssh 客户端通过 ssh 协议运行命令连接到 ssh 服务器来启动通信时,从我到服务器的初始消息是否使用公钥或私钥加密?
否。初始消息未加密。密钥交换后的通信将使用从共享密钥(会话密钥)派生的密钥进行加密,这是 DH 密钥交换(某种形式)的结果。
当ssh服务器收到这个初始消息时,它是否使用公钥来解密初始消息,这听起来很奇怪,因为每个人都可以拥有公钥,从而可以解密初始消息?
解密是使用私钥完成的(签名验证是使用公钥完成的)。
- 如果我发送连接到服务器的命令是将服务器上的某个文件 scp 到我的本地主机,那么当 ssh 服务器将请求的文件发送给我时,公钥是否用于加密该文件?
不,就像之前那样。文件(整个会话)由“会话密钥”加密
当ssh客户端收到加密文件时,是否使用私钥来解密该文件?
不,不。
- 公钥和私钥是否仅在身份验证期间使用,而不是在身份验证完成后使用?
是的
如果这是正确的,那么在身份验证后,是否会对要发送的消息进行某种类型的加密,并对接收到的消息进行解密,以用于 ssh 服务器和客户端之间的通信?
不确定这个问题是什么意思。该会话使用对称密码(通常是 AES)以及从上述密钥交换中获得的密钥进行加密。