使用以下方法将 OpenSSH 密钥转换为 PuTTY 密钥puttygen.exe

使用以下方法将 OpenSSH 密钥转换为 PuTTY 密钥puttygen.exe

我在 Oracle Cloud 中生成了一个 Linux 实例。我在本地使用 Windows-10 客户端计算机。在生成 Linux 实例期间,已在 Linux 中生成私钥和 Open-SSH 公钥,并将其下载到本地 Windows。现在有了这个

1.)Open-SSH 格式的私钥存储在 Windows 和 Linux 上并保密

2.)我可以使用这个公钥登录 Linux

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ssh -i D:\wrk\ssh-key-2020-08-01.key [email protected].
Connection is established, thus key validation is successful.

现在我需要一个窗口上的 SFTP GUI 客户端来进行文件交换。

我尝试了 WinSCP 或 Filezilla。这两个工具都需要 PPK 或 PEM 格式的私钥。OCI/oracle 提供的私钥文件 [永远免费的版本,因此不期望 Oracle 方面提供支持] 具有 .KEY 文件扩展名并具有 openSSH 格式,猜测它是 SSH2。

<edit added in response to comment of  Martin Prikryl>

实际上,WinSCP 确实尝试处理我的私有 openSSH 密钥文件,方法是将其转换为 Putty 格式。尝试转换 WinScp 会发出错误信号:“无法识别的密钥类型”。无论如何,我的 openSSH Pub/key-keypair 已证明可以通过 SSH 控制台连接进行密钥交换。

</edit added in response to comment of  Martin Prikryl>

需要处理现有的私钥,因为我看不到在 Clound/Linux 和我的本地客户端/Windows-10 之间交换任何文件的方法。因此,如果没有 FSTP 连接,我无法将任何新创建的 PEM 或 PPK 格式的秘密私钥文件从 Linux 传输到 Windows 或反之亦然。

因此我的问题

当我尝试使用 WinSCP 执行此操作时出现错误“无法识别的密钥类型”,我该如何将 Windows 中的 openSSH 私钥转换为 PEM 或 PPK 格式?

附加信息 尝试接近@Martin Prikryl 的要求:

我创建了另一个具有自己的 SSL 密钥对的 LINUX 实例,并将其发布在这里。该实例稍后将被处理,因此我猜想此实例不需要隐私。

powershell>openssl rsa -check -in ssh-key-trial.key RSA key ok 写入 RSA 密钥

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAsUQnog4X8CramCQMGk9MHJ+43QSrIsUsTpvrSvYpS+PcJEWY
RhHMDJWnJmxj6qc44WZLU1dx/578X7UvARlVXRr7vEOW00ruk7TNViH1+1Qt2tkz
RI5VIhPvjeN4YKs7NfdLRQNB0hmMKavkkhyUHYQZozS/w6+ubyQA8+mydueocUG/
Z5PYQhxY+dxMauJs92lyIQNgcZfHFhhrfHDnipDFd3YHxI+RNPoTUrKAk6NgD4QB
R/XuV4pwjuo6F4Zjc+kxHRAIHJJuGyHtMI07NgvqyBvtD24exigxUxHBh0DQIe86
KxwqcqOzoUfqPwTta+d+/bEpwOAY6Zep9ETLywIDAQABAoIBAACfSIT/EIjHX1QM
pazC5krs5P7q7/osTKq/Kyg5gDwSyoHr0Yw+NuHWbQki7HWofgCV3iqM9IZhVaVf
r+6VJ9CEJaFSK8/9LoJUSBmxmH0zx70GAwMn485ocsW1F0G1vXx/gXqhCJkCwgMW
f82FOMJnOrskFluPLgCYMspkHW9Y78i/4m8m7ezclCRdu2rMJpTx9mmEZ4hHkfYN
z93kbOSGPRR1aJpfKEM5hQsd+jzQqzH7ETEGYequ9rPv4xBaEnrYLCkvVQ3r+TPY
RgqBXW+17+oJwwxok4kDsQBPoY8HbJGuhPTQOVBSZeHyA7g81rIIPC2xD9bQ+yYa
SwFJ/RUCgYEA1Vxkbuk8LGHQ29tz2a2EDw6Aw9prpmRJGbuDUowoqNSF3gRAbDEn
zjiLg6eHIG/XvQILOEKcG/xx+jzDw3ohceZxaWY0/QQoJsOSqwOn34o+Cq9JxlS8
z++iOcXZW5pyAjTPzZrtPbisOy9SugxwP9K2zP0nIvF3DZ+8Mx6dUO8CgYEA1LEl
5HdVsYZVIS6S1Jp1uSu056+X22tOVce/vB6WPNaKgoPEW+dcX0E6So4GlvBfkIYT
brzk4rdNFGLt0QyH9s1AgEcORDNHYZ9w93zBz4yZSFPLCzMnMA79shrkL8WnTJpW
UjBGYFdQrnukng4f5mNK8o5/foGibvJWk9Oe+uUCgYAP4kv70dNP/ow9Ae5zAy70
rAC8E/O1tHuYtdQF/jc8sm2w5KIjK9mpyZ3hVESEDq+B+7f4HUVf9ABMP9/XGq2I
vD4vOZOyTm/qyt6Nar1BsBoEU55rbH2OAWoTYP5Yinv4XBQoW2NUF/6CfXhsL2bf
6YEAa8xRFqblVcH+EEZn8wKBgQCDje66GXXPkB8nnv8CsWcPWZFTnLB47y5MsHhP
izux9aFGiOnzTm88G8RKSP6abaMuaT+rxvproKT0bxxZqT6P0PSMY2bXmEAWid/9
tBTMo1JMAkgcbU9X0m3os+lgAwkvwGaT/3gILvmgcqmneWURw2igDrOdM+GcbhhO
5x32YQKBgH04h5jE+AfK+Y+BzigpJIDwDvLjr6DzinW8rTzTT7bsqRg0TT85mvp+
qK9Ndn3aDClj6FgrYsn1xsHoEy2V/AkmFRuZiC44bouiAvAX06XBs5uOjS4tWD+5
7Fryt6MkS7UmBPYvYn2yhAPmg4v2cfyqFB7k8ZTdCX2uqJzubkiz    
-----END RSA PRIVATE KEY-----

rsa -检查原始私钥文件显示没问题。然而,WinScp、Putty 和 PuttyGen 不接受它。希望这能支持我的观点。

@马丁·普里克里尔

是的,我只是将上述 <openssl rsa -check..> 命令的输出复制到上面的文本复合体中。下面您可以看到原始文件 ssh-key-trial.key 的内容。

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxRCeiDhfwKtqY
JAwaT0wcn7jdBKsixSxOm+tK9ilL49wkRZhGEcwMlacmbGPqpzjhZktTV3H/nvxf
tS8BGVVdGvu8Q5bTSu6TtM1WIfX7VC3a2TNEjlUiE++N43hgqzs190tFA0HSGYwp
q+SSHJQdhBmjNL/Dr65vJADz6bJ256hxQb9nk9hCHFj53Exq4mz3aXIhA2Bxl8cW
GGt8cOeKkMV3dgfEj5E0+hNSsoCTo2APhAFH9e5XinCO6joXhmNz6TEdEAgckm4b
Ie0wjTs2C+rIG+0Pbh7GKDFTEcGHQNAh7zorHCpyo7OhR+o/BO1r5379sSnA4Bjp
l6n0RMvLAgMBAAECggEAAJ9IhP8QiMdfVAylrMLmSuzk/urv+ixMqr8rKDmAPBLK
gevRjD424dZtCSLsdah+AJXeKoz0hmFVpV+v7pUn0IQloVIrz/0uglRIGbGYfTPH
vQYDAyfjzmhyxbUXQbW9fH+BeqEImQLCAxZ/zYU4wmc6uyQWW48uAJgyymQdb1jv
yL/ibybt7NyUJF27aswmlPH2aYRniEeR9g3P3eRs5IY9FHVoml8oQzmFCx36PNCr
MfsRMQZh6q72s+/jEFoSetgsKS9VDev5M9hGCoFdb7Xv6gnDDGiTiQOxAE+hjwds
ka6E9NA5UFJl4fIDuDzWsgg8LbEP1tD7JhpLAUn9FQKBgQDVXGRu6TwsYdDb23PZ
rYQPDoDD2mumZEkZu4NSjCio1IXeBEBsMSfOOIuDp4cgb9e9Ags4Qpwb/HH6PMPD
eiFx5nFpZjT9BCgmw5KrA6ffij4Kr0nGVLzP76I5xdlbmnICNM/Nmu09uKw7L1K6
DHA/0rbM/Sci8XcNn7wzHp1Q7wKBgQDUsSXkd1WxhlUhLpLUmnW5K7Tnr5fba05V
x7+8HpY81oqCg8Rb51xfQTpKjgaW8F+QhhNuvOTit00UYu3RDIf2zUCARw5EM0dh
n3D3fMHPjJlIU8sLMycwDv2yGuQvxadMmlZSMEZgV1Cue6SeDh/mY0ryjn9+gaJu
8laT05765QKBgA/iS/vR00/+jD0B7nMDLvSsALwT87W0e5i11AX+NzyybbDkoiMr
2anJneFURIQOr4H7t/gdRV/0AEw/39carYi8Pi85k7JOb+rK3o1qvUGwGgRTnmts
fY4BahNg/liKe/hcFChbY1QX/oJ9eGwvZt/pgQBrzFEWpuVVwf4QRmfzAoGBAION
7roZdc+QHyee/wKxZw9ZkVOcsHjvLkyweE+LO7H1oUaI6fNObzwbxEpI/pptoy5p
P6vG+mugpPRvHFmpPo/Q9IxjZteYQBaJ3/20FMyjUkwCSBxtT1fSbeiz6WADCS/A
ZpP/eAgu+aByqad5ZRHDaKAOs50z4ZxuGE7nHfZhAoGAfTiHmMT4B8r5j4HOKCkk
gPAO8uOvoPOKdbytPNNPtuypGDRNPzma+n6or012fdoMKWPoWCtiyfXGwegTLZX8
CSYVG5mILjhui6IC8BfTpcGzm46NLi1YP7nsWvK3oyRLtSYE9i9ifbKEA+aDi/Zx
/KoUHuTxlN0Jfa6onO5uSLM=
-----END PRIVATE KEY-----

我刚刚发现 -File 是 -File 的解密版本。我的问题是 WinScp 和 PuttyGen 无法处理文件的加密形式。 <openssl rsa -check..>-command 可以解密输入并将解密版本写入输出。

此命令将私钥直接解密到输出文件中:

openssl  rsa -in ssh-key-trial.key -out decrypted_ssh-key-trial.key

现在通过 WinScp 使用此文件,我获得了与 Oracle 基础设施实例的连接。问题解决了

问题原因是:WinSCP 和 PuttyGen 在 windows 上无法将 openSSH 私钥(加密格式)转换为 PEM 或 PPK 格式。解决方案:必须先使用 windows-10 的 SSH-Tool 解密 openSSH 私钥。

WinScp、PuttyGen 无法读取加密格式的打开的 SSH,也就是带有文件头的<RSA PRIVATE KEY>

因此解决方案是:将文件解密为如上所示的格式。WinScp 5.17.7 (Build 10640)、PuttyGen Rel 0.73 可以理解此格式

感谢@Martin Prikryl 在这个绝望的情况下给予我的支持,帮助我度过了难关。

答案1

我遇到了同样的问题。
使用 rsa、2048 和 git bash 生成 ssh 密钥。使用 PuttyKey Gen 转换失败。
然后我下载了最新版本,它成功了。
根据帮助/关于,版本为 0.74。

尽管我已经使用相同的格式好几年了,但还是有新功能。Windows Git Bash 可能使用了新的 openssh 或较新的进程。

答案2

您可以使用名为 的程序将 OpenSSH 密钥转换为 PuTTY 密钥puttygen.exe。您可以在以下位置下载文件替代二进制文件在此网页上:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

使用以下方法将 OpenSSH 密钥转换为 PuTTY 密钥puttygen.exe

  • 打开puttygen.exe并点击转换菜单项。然后按导入密钥
  • 导航到您的 OpenSSH 密钥的位置,然后单击打开按钮。
  • 如果此密钥需要密码,您现在可以将密码输入到标有Key passphrase和的两个框中Confirm passphrase
  • 现在,您可以通过单击保存公钥保存私钥纽扣。

相关内容