SSH - 从传入连接中检索公钥

SSH - 从传入连接中检索公钥

我已经从 IP 为 xxx.yyy.148.203 的远程计算机设置了 ssh 连接(autossh),以进行反向端口转发。今天我来到服务器(海外),不小心删除了服务器上我远程计算机的公钥。这是服务器的日志:

authpriv.info dropbear[6422]: Child connection from xxx.yyy.148.203:43363
authpriv.info dropbear[6422]: Exit before auth (user 'root', 0 fails): Exited normally

有没有办法从传入连接中检索远程机器的公钥?

值得一提的是,我目前没有其他方法可以访问远程机器或询问该国的任何人,而且无法很快返回。

答案1

我不太明白你删除了什么...


ssh-keygen如果您删除了属于私有 ssh 密钥的公钥:可以使用和选项从私钥文件中重新生成公钥-e -f /path/to/private.key。这既适用于 ssh 客户端使用的私钥,也适用于 OpenSSH sshd 服务器使用的私钥。


如果您删除了文件中的某个条目~/.ssh/authorized_keys:是的,理论上您可以从传入连接中恢复该条目:

据我所知,当您的 SSH 服务器允许公钥认证并且客户端尝试公钥认证时,客户端将把完整的公钥发送到远程服务器。

如果服务器不接受第一个公钥,则客户端通常会发送下一个可用的密钥,直到:

  • 来自客户端的所有公钥都已发送
  • 已达到服务器的最大登录尝试次数限制并且连接已关闭
  • 服务器响应一条消息,表示将接受特定密钥

据我所知,OpenSSH sshd 服务器上的正常日志级别实际上不会记录/显示客户端尝试使用的完整 public_key,而只会记录/显示指纹,但我最近没有测试过。(看看发生了什么LogLevel Verbose例如DEBUG[1-3]

此博客和链接的定制 sshd 可能会引起您的兴趣:https://blog.goeswhere.com/2015/10/ssh-key-capture/ 如果使用普通 sshd 进行登录不足以恢复公钥。

相关内容