我们将文件传输到我们应用程序中的远程服务器,所需的身份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可以做到。
my-key-private对它进行encryption my-key-pub解密文件 还有其他方法去做这样的事情,
但是,获取其他人生成的密钥对是无用的身份validationscheme 。
它有一个强烈的暗示,即你信任他们,就像你信任自己一样。
这些是你可以问你的IT的开放性问题。
如果问责制是 IT的一个问题 ,
没有理由不能使用X.509证书来进行SSHvalidation而不是裸密钥 – 事实上,如果OpenSSH以这种方式工作,我更喜欢它! 但是,OpenSSH的股票版本并没有,而且这是目前的主stream。
我已经看到了几个OpenSSH的修补版本,而且商业SSH.com实现似乎也支持X.509authentication。 所以,如果你的组织正在使用其中的一个,那么要求由中央机构签署密钥将是非常有意义的。
也就是说,没有理由要求第三方生成私钥! 如果他们正在使用X.509路由,那么他们应该生成一个密钥对和一个证书签名请求,就像使用其他任何用于SSL的X.509证书一样。