我必须将私钥存储在文件中吗?

koj*_*iro 8 ssh key-authentication ssh-agent

我有一个数据库驱动的应用程序,需要通过 ssh 与另一台服务器进行通信。Web 应用程序可以生成密钥对并将公钥提供给用户,或者它可以在 Web 表单的字段中接受未加密的私钥。然后它使用可逆加密对密钥进行加密并将其存储在其数据库中。

当 Web 应用程序开始与 ssh 服务器通信时,我需要解密私钥并以某种方式将其提供给 ssh。我可以创建一个安全的临时文件mktemp,将 ssh 指向它,然后销毁该文件,但这是额外的工作,它以一种似乎没有必要的新方式公开密钥。我看过man ssh,man ssh-agent和man ssh-add,但似乎没有任何方法可以使用密钥而不先将其添加到文件中。我错过了什么?

Ulr*_*gel 4

如果您想使用ssh/等现有工具ssh-agent,您必须以文件形式提供密钥。

另一种可能更可行的解决方案是直接ssh在应用程序中实现客户端并依赖第三方库(例如JSch)或扩展ssh/ssh-agent以直接从数据库接收和解密密钥。