使用RSA密钥登录SSH而不是普通登录

使用RSA密钥登录SSH而不是普通登录

我用来ssh-keygen在 Kali 文件夹上生成一对密钥~/.ssh

伟大的。我还将公钥添加到了~/.ssh/authorized_keys.600该文件的权限也已设置。

结果是:

  • Putty:使用 ip_rsa.ppk - 作为 trunks@lanIP 登录invalid format
  • PowerShell telnet:ssh trunks@lanip -i 私钥文件路径 - invalid format.

我什至转换成openSSH也没有用。我做错了什么?我不断登录我的常规登录帐户,例如用户名和密码,这不是我想要的。叹。以前从未遇到过这个问题。 Putty 需要更新他们的软件。严重地。

我检查了公钥,它是一串长的,格式正确的。我使用 putty telnet 和公钥字符串在 DD-WRT 上没有任何问题。

答案1

ssh-keygen可以生成三种格式的文件:

  • OpenSSH自己的格式(RFC4716,默认),
  • PKCS8 和
  • PEM 格式。

您可以通过私钥的第一行来区分它们:

  • 如果它说"-----BEGIN OPENSSH PRIVATE KEY-----",它是 RFC4716,
  • 如果它说"-----BEGIN RSA PRIVATE KEY-----",它是PEM,
  • 如果是的话"-----BEGIN PRIVATE KEY-----"就是PKCS8。

在所有情况下,公钥看起来都是一样的。它还能够在这些格式之间自由转换。

您在 PowerShell 中使用的是 OpenSSH。您可以通过运行来验证这一点ssh -V。它应该可以直接使用任何这些格式的密钥。

要将 生成的文件转换为ssh-keygenPutty 的 ppk 格式,请使用puttygen.或者,您可以使用 生成密钥,puttygen并且它能够将其转换为 OpenSSH 格式。

公钥包含“键入密钥注释”三部分,其中最后一个部分是可选的,可以自由更改。它可以在authorized_keys文件中用于标记密钥(例如,解释相应的私钥在哪里或是谁的密钥)。其他部分应逐字复制。请注意,公钥始终包含在单线,并且应将其作为单独的行附加到authorized_keys文件中。

如果您已经能够使用任何身份验证机制 ssh 到目标主机,请尝试,如果文件不存在,ssh-copy-id target-host它将创建具有正确权限的文件并在那里添加私钥,或者如果文件存在但密钥是,它将附加密钥.ssh/authorized_keys不在文件中。构建此类文件的另一种方法类似于cat id_rsa.pub >> authorized_keys.

答案2

我将确保复制/粘贴的私钥的文件大小与原始私钥的文件大小相同。文本编辑器可以在文件末尾添加或忽略换行符,从而导致此问题。

相关内容