我的基本理解是这样的:
- (连接到的)服务器
sshd
使用公钥加密一些消息 - 客户端的
ssh
或ssh-agent
解密它并发回一些东西(消息的校验和?它的签名?) - 服务器
sshd
验证这与验证用户的消息是否一致
但细节是什么?什么是“一些消息”,ssh(-agent)
发回什么?一遍又一遍地使用相同的原始消息执行此操作总是会产生相同的通信吗?
如果ssh-agent
使用此身份验证过程,是否可以通过 bash 工具重播?例如,ssh-agent
提供的公钥可以通过 获取ssh-add -L
,那么剩下的过程呢?还是需要手动连接到$SSH_AUTH_SOCK
unix 套接字和一些低级通信?
相关:Thomas 的 Server-Bob 对话在这里,尽管这表明客户端只是签署一些随机数据,然后将针对服务器用户的所有公钥进行检查authenticated_keys
。 另一方面,此说明声称消息已加密为先前确定的用户的公钥(不是用于 ssh 加密的公钥),并且客户端输出的校验和也取决于一些随机会话 ID。哪一个是正确的?还是两者都只讲述了更复杂的故事的一部分?