openssh密钥和腻子密钥有什么区别?


48

我发现ssh-keygen(“ ssh”包)与puttygen(“ putty”包)产生了不同的密钥。

如果我使用ssh-keygen某些ssh服务器创建公钥和私钥,则不会接受我的密钥。如果我puttygen仅使用一台服务器创建密钥,则不会接受。

为什么Linux存储库不为此提供一些通用的解决方案(软件包)?我找到了另一个软件包ssh-3.2.9.1,该软件包创建了与腻子配合使用的密钥。但是,为什么SSH中没有方便的解决方案?


1
对于初学者,PuTTYGen提供了显式转换密钥的方法。因此,OpenSSH和PuTTY用于存储密钥的本机格式是不同的。但是,支持的算法是兼容的。我的猜测是您在该字段中输入了一些时髦的值,该值允许您为PuTTYGen中生成的密钥提供位数(例如,DSA似乎需要 1024位),或者您选择了类似RSA-1的名称这些天大多数服务器将禁用。不幸的是,这个问题并没有真正说明您尝试和期望的结果。
0xC0000022L

Answers:


47

OpenSSH是SSH协议的事实上的标准实现。如果PuTTY和OpenSSH不同,则说明PuTTY是不兼容的。

如果使用ssh-keygen带有默认选项的OpenSSH生成密钥,则该密钥几乎可以与那里的每个服务器一起使用。不接受这样的密钥的服务器将是老式的,使用不同的SSH实现,或者以怪异的限制性方式进行配置。在某些服务器上可能不支持非默认类型的密钥,特别是ECDSA密钥使会话建立的速度稍快一些,但仅受最新版本的OpenSSH支持。

PuTTY使用其他密钥文件格式。它带有在自己的格式和OpenSSH格式之间转换的工具.ppk

您发现的此ssh-3.2.9.1是一种商业产品,具有其自己的不同私钥格式。没有理由使用它来代替OpenSSH,它只能兼容一些,需要付费,而且在那里使用它的教程大约为零。


24

大多数Linux发行版putty都可用于Linux。您可以putty在Linux端进行安装,并用于puttygen将.ppk文件转换为常规的ssh样式密钥文件(称为PEM文件-即使它们的文件名中没有.pem)。

puttygen id_dsa.ppk -O private-openssh -o id_dsa

注意:您还可以puttygen用于将ssh样式PEM文件导入回putty

PuTTY的作者选择了简单性,因此构成putty / ssh 2密钥认证所使用的基础安全性的公共密钥和私有密钥存储在单个专有的.ppk文件中。通常,这些密钥由ssh维护为2个单独的文件。

在Linux上,密钥文件通常保存在目录.ssh中。

在标题为“ 将PEM转换为PPK文件格式 ”的Stack Overflow问题中,这里有一个很好的转换过程概述。

Putty的作者还在putty用户手册中讨论了使用.ppk文件的原理。您可以在第8.2.12节中阅读有关内容。


您是说我的Linux使用过时且易受攻击的SSH-1(如果我不使用腻子的话)吗?负担得起吗?Wikipedia
YarLinux

不知道你从哪里得到的。不,你应该没事。您正在使用哪个版本的Linux?您正在使用什么Linux Distro?运行以下命令以查找您的Linux版本:uname -a。Linux发行版:lsb_release -a
slm

我使用Ubuntu 12.04。您是说SSH-2具有不同的格式吗?我只是对软件包名称和命令“ ssh”感到困惑。
YarLinux

我懂了。您所指的ssh工具通常是称为openssh的软件包的一部分。该软件的版本与您所指的SSH-1和SSH-2无关。该术语(SSH-1和SSH-2)是指您正在使用的密钥文件的类型。只要您使用的是最新版本的openssh,此文件类型对您来说就不成问题。
slm

有三种不同的密钥格式吗?OpenSSH,ssh.com和PuTTY?
YarLinux

12

它们都存储“ SSH协议版本2的RSA密钥对”,并且可以互换转换。但是,关于实际存储的格式差异:

来自https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.html

PuTTY密钥格式的优点是:

  • 公钥的一半以明文形式存储OpenSSH的私钥格式对整个密钥文件进行加密因此客户端必须先询问您的密码,然后才能对密钥进行任何操作。特别是,这意味着它甚至必须向服务器提供公钥进行身份验证之前,必须先询问您的密码。PuTTY的格式以纯文本格式存储公共密钥,并且仅加密私有部分,这意味着它可以自动将公共密钥发送到服务器,并确定服务器是否愿意接受该密钥的身份验证,并且只会要求如果确实需要,请输入密码。

    我认为OpenSSH将读取.pub为此,如果文件出现在私钥文件的旁边,但这常常是出于方便的目的而引起的混乱(我已经看到人们替换了私钥文件,并在文件.pub旁边放置了过时的文件,然后所产生的SSH身份验证过程感到困惑!)。
  • 钥匙是完全防篡改的。以明文形式存储公钥的密钥格式可能容易受到篡改攻击,其中以某种方式修改密钥的公共部分,使得使用篡改的密钥进行的签名泄漏有关私有部分的信息。因此,PuTTY的密钥格式包含一个MAC(消息身份验证代码),从密码短语中删除,并覆盖密钥的公共部分和私有部分。因此,我们提供了以明文形式提供公共密钥的便利,但是我们也立即检测到任何篡改攻击的企图,并提供了安全性和便利性的结合,我相信在任何其他密钥格式中都找不到。作为附带好处,MAC还可以覆盖密钥的注释,从而避免了如果有人交换两个密钥并交换注释可能造成的任何恶作剧。

    OpenSSH保持公共密钥加密的方法可能它还提供了针对这种攻击的某种安全性,但尚不清楚它是否提供了适当的保护:为机密性设计的加密通常会留下攻击者可以有效修改加密数据的方式。为了实现真正的完整性保护,您需要一个真正专用的MAC,其专门用于此目的。

[ 重点补充]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.