在Azure Linux VM上使用OpenSSH SSH-2私钥(旧PEM格式)

27
我一直使用Puttygen为Azure Linux VM生成SSH密钥对。最近,我发现在Windows 10上可以使用“ssh-keygen”命令生成私钥和公钥,因为OpenSSH在Windows 10上可用。
我尝试了这个方法,但没有成功。
根据此文章的说明,我们需要使用下面的命令,它会成功地导出私钥和公钥到指定位置。但是,当我在Putty中加载私钥并连接到我的服务器时,它会出现错误。
Unable to use key file "C:\publickey\id_rsa.ppk" (OpenSSH SSH-2 private key (old PEM format))
login as:

以下是我在Windows 10上生成密钥对所使用的命令:
C:\Users\xxx>ssh-keygen -t rsa -b 2048 -C "azureuser@vm"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\xxx/.ssh/id_rsa): C:\publickey\id_rsa.ppk
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\publickey\id_rsa.ppk.
Your public key has been saved in C:\publickey\id_rsa.ppk.pub.
The key fingerprint is:

有人尝试在Windows 10上使用此方法生成密钥吗?

而PPK通常是“Putty私钥” - 您的OpenSSH生成的不是PPK。 - Rup
我不确定为什么他们在我标记的文章中提到了这一点。他们要求我们使用相同的命令ssh-keygen -t rsa -b 2048 -C“azureuser@vm”。 - aquib.qureshi
那应该可以正常工作吧?您想要将Azure生成的.pub文件的内容提供给它。实际上,所有这些指令在我看来都是正确的。 - Rup
我在创建虚拟机时提供了pub文件的内容,但没有起作用。但是我收到的错误消息有点奇怪。 - aquib.qureshi
命令行SSH是否可用,使用您的id_rsa.ppk文件(使用“-i”)?如果是,则这不是Putty正确格式的.ppk文件,您需要从转换菜单中将其加载到Puttygen中以获取兼容Putty的密钥。 - Rup
显示剩余2条评论
2个回答

47
您已经使用ssh-keygen创建了一个名为id_rsa.ppk的私钥文件。但是这是OpenSSH格式的私钥,需要转换为Putty专用格式才能在Putty中使用。
您有以下选择:
1. 使用该密钥进行命令行SSH(它是正确的格式)。您可以:
- 在命令行上指定文件,例如`ssh -i id_rsa.ppk azureuser@vm` - 创建一个文件夹`C:\Users\Aquib\.ssh`,并将其移动到那里作为`C:\Users\Aquib\.ssh\id_rsa`(没有扩展名):ssh现在将默认加载此文件以供您尝试连接的所有服务器使用 - 如果您不想将其用于所有服务器,或者例如如果您已经有一个默认的id_rsa与git一起使用,则可以设置一个`C:\Users\Aquib\.ssh\config`文件,告诉SSH在哪里查找密钥,并告诉它应该用于哪些服务器。
2. 将此文件转换为适合Putty使用的正确格式:
- 在Puttygen中,在“转换”菜单中选择“导入”并加载id_rsa.ppk - “保存私钥”到另一个文件 - 使用此新文件与Putty一起使用,可以在连接属性菜单上或运行Pageant(Putty密钥代理程序)并“添加密钥”新文件。(例如,您可以在启动菜单中创建一个Pageant快捷方式,并将密钥文件名作为命令行参数传递,以便自动加载此文件。)

使用 PuttyGen 转换私钥对于我来说没有问题。 - Cagy79

5

对于Linux(例如Ubuntu),您可以按照以下方式安装命令行puttygen:

# sudo apt install putty-tools

...并从本地ssh密钥id_rsa生成putty版本的id_rsa.ppk,步骤如下:

# puttygen id_rsa -O private -o id_rsa.ppk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接