我用来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-keygen
Putty 的 ppk 格式,请使用puttygen
.或者,您可以使用 生成密钥,puttygen
并且它能够将其转换为 OpenSSH 格式。
公钥包含“键入密钥注释”三部分,其中最后一个部分是可选的,可以自由更改。它可以在authorized_keys
文件中用于标记密钥(例如,解释相应的私钥在哪里或是谁的密钥)。其他部分应逐字复制。请注意,公钥始终包含在单线,并且应将其作为单独的行附加到authorized_keys
文件中。
如果您已经能够使用任何身份验证机制 ssh 到目标主机,请尝试,如果文件不存在,ssh-copy-id target-host
它将创建具有正确权限的文件并在那里添加私钥,或者如果文件存在但密钥是,它将附加密钥.ssh/authorized_keys
不在文件中。构建此类文件的另一种方法类似于cat id_rsa.pub >> authorized_keys
.
答案2
我将确保复制/粘贴的私钥的文件大小与原始私钥的文件大小相同。文本编辑器可以在文件末尾添加或忽略换行符,从而导致此问题。