据我了解,ssh 的简化工作如下:
- 服务器发送其公钥以建立信任或匹配,以防过去的连接
- 使用两者的公钥创建对称预共享密钥。
- 客户端发送其公钥以检查它是否存在于 authorized_keys
- 如果找到密钥,它会使用客户端的公钥加密一些秘密。
- 客户端使用 private 解密并将秘密发送到服务器,服务器对其进行检查。
但是,比如说,同一个亚马逊发布的 .pem 文件,两个密钥都包含,但是您需要连接的机器没有想要加入的机器的公钥,ssh 是如何工作的在这种情况下?只是跳过第三步的第二部分?
据我了解,ssh 的简化工作如下:
但是,比如说,同一个亚马逊发布的 .pem 文件,两个密钥都包含,但是您需要连接的机器没有想要加入的机器的公钥,ssh 是如何工作的在这种情况下?只是跳过第三步的第二部分?
这不太对:
K
将为两个节点生成一个共享密钥。这仅使用临时密钥(即那些仅用于获取共享密钥然后立即销毁的密钥)并且不需要通过开放通道发送密钥。K
_ _ _H
HS
HS
服务器的公钥,并使用服务器的密钥对其进行签名,如果出现问题,它会显示一条消息并断开连接。服务器和客户端之间的所有进一步通信都使用密钥加密
H
(更准确地说,使用在其基础上获得的应用对称密钥)。authorized_keys
) 并决定是否允许连接。如果没有,它可能会提供另一种身份验证方法;例如,通过不同的密钥或密码。那些。有以下重要区别:
/etc/ssh/
)和客户端密钥对(在 ~/.ssh/` 中)都仅用于身份验证,本身不用于加密。有用的链接
步骤 3 不限于公钥认证。服务器的配置文件中有一些选项
sshd_config
可以确定允许的身份验证方法。引用自
man sshd_config
:大多数服务器允许
publickey,password,keyboard-interactive
. 在这种情况下,如果服务器不知道客户端的公钥,那么它将继续进行下一个身份验证方法并请求用户的密码。亚马逊默认禁用所有方法,除了
publickey
. 在这种情况下,如果用户没有服务器知道的密钥,则不会创建会话。你问题的第4点和第5点我不明白。