有没有这样一个签名的SSH密钥对?

我们将文件传输到我们应用程序中的远程服务器,所需的身份validation方法是使用SSH密钥。

所以,我使用ssh-keygen创build了我的密钥对,并提交了我的公钥以插入到远程主机的authorized_keys文件中。 然而,这被IT安全部门拒绝,他说他们会为我生成密钥对,并将私钥发给我。 原因:“我们需要IT安全团队签署SSH密钥,以确保我们在追踪和问责方面有一定的领先优势。”

很明显,我有这个问题。 拥有由别人生成的私钥意味着我可以让那个人伪装成我,而我却不知道。 我试图find反驳这个观点的方法。

据我所知,似乎没有任何已知的方法来签署密钥,这有助于跟踪login的人。 我提交公钥的事实意味着我拥有密钥,而使用该密钥login到远程服务器的任何人都默认为自己。 如何签署帮助? 他们怎么会签字?

有人请告诉我,如果我错了,谢谢!


好的,现在我们已经确定SSH密钥是无法签名的,我需要向IT安全部门展示他们如何能够实际logging谁在login(要有build设性,我想,如果不是高压开始的话)。 在我自己的服务器上,我将sshd的LogLevel设置为DEBUG。 所以现在当我login时,我可以看到以下代码片段:

Found matching DSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx 

这似乎是一个哈希值。 我如何将这个关联到authorized_keys文件中的公钥被使用? 我知道还有另外一条说:

 debug1: matching key found: file /home/bofh/.ssh/authorized_keys2, line 1 

但是如果我要在文件的顶部插入一个按键,将原来的按键向下按下,这个function就没有那么简单了。

谢谢!

在你提出问题的时候,宇宙已经改变了。

Openssh5.4增加了对你之后的证书种类的支持。 有关更多信息,请参阅http://www.openssh.org/txt/release-5.4 (和手册页)上的发行说明,或者如果您确实想要发疯,请查看PROTOCOL.certkeys以了解更多细节

在阅读您的问题时,我的第一印象是,IT人员得到了SSH和SSL混淆(它必须由我们签名),也不理解SSL签名如何真正起作用。

无论如何,没有办法SSH密钥可以签名(我知道)。

这个请求中的东西是不正确的。

如果它将签名文件传送到服务器,
我希望这样做至less可以做到。

  1. 你为自己创build一个密钥对(称之为我的密钥)
    • 当你想发送的东西,
    • 你首先用my-key-private对它进行encryption
    • 然后上传到服务器这个encryption文件
    • 服务器上的某个人必须像这样反转过程,
    • 他们使用您的my-key-pub解密文件
    • 如果你已经发送文件,解密将恢复它
    • 否则,他们将不会得到任何可用的文件
    • 有效地,你已经用你的私钥签名了文件
    • 他们已经用你的公钥validation了签名
    • 问责制是由他们确认你已经发送文件

还有其他方法去做这样的事情,
但是,获取其他人生成的密钥对是无用的身份validationscheme
它有一个强烈的暗示,即你信任他们,就像你信任自己一样。


这些是你可以问你的IT的开放性问题。
如果问责制是 IT的一个问题

  1. 他们如何确保你不分享/放弃他们给你的钥匙? 和,
    • IT密钥对与IT给你的口令有什么不同?
      在这种情况下,为什么要用钥匙对呢?

没有理由不能使用X.509证书来进行SSHvalidation而不是裸密钥 – 事实上,如果OpenSSH以这种方式工作,我更喜欢它! 但是,OpenSSH的股票版本并没有,而且这是目前的主stream。

我已经看到了几个OpenSSH的修补版本,而且商业SSH.com实现似乎也支持X.509authentication。 所以,如果你的组织正在使用其中的一个,那么要求由中央机构签署密钥将是非常有意义的。

也就是说,没有理由要求第三方生成私钥! 如果他们正在使用X.509路由,那么他们应该生成一个密钥对和一个证书签名请求,就像使用其他任何用于SSL的X​​.509证书一样。