我正在用C#编写一个实用程序,该实用程序需要通过SSH(使用SSH.NET)自动连接到服务器,这是一个非常轻松的过程。服务器强制执行公钥身份验证(该服务器属于我,我拥有完全的物理控制权),因此只有少数人可以访问它。
在Windows上,我们都已经设置了Pageant,可以使用TortoiseGit与服务器进行通信,因此,对我来说,只需从Pageant中读取已经解锁的内存中私钥,而不是每次我都想再次输入密码,对我来说都是有意义的调试/运行该实用程序。
到目前为止,我找到的最接近的东西是this Python module from Paramiko,它检查是否存在Pageant窗口并公开send和receive方法。这应该很容易移植到C#,但是我想知道我到底需要发送什么命令到Pageant来接收密钥吗?
纵观Paramiko,这不是立即显而易见的,而且我找不到用于以编程方式使用Pageant的任何类型的文档。答案不一定必须使用C#,但是如果答案是肯定的,这将使我不必为它编写一个小型实用程序。
最佳答案
您没有从Pageant读取私钥,而是要求Pageant计算签名。这需要修改客户端的源代码。
在我们的SecureBlackbox产品的最新版本中,我们已经为.NET的SSH和SFTP客户端组件添加了Pageant和ssh-agent支持,因此您可能需要研究一下它们。
关于c# - 从Pageant读取SSH私钥,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13896422/