从 .pem 密钥派生的 .ppk 可以工作,但 .pem 在 MobaXterm 或文件传输程序中不起作用

问题描述 投票:0回答:2

我有一个 ec2 实例及其 .pem 密钥文件,我想用它来将文件从本地计算机传输到服务器

我尝试使用以下方式连接实例:

  • mobaXterm 与 .pem 文件(在
    chmod 400 abc.pem
    之前)--错误:
    Server refused our key / No supported authentication methods available (server sent: publickey)
  • 具有从 .pem 文件派生的 .ppk 的 Putty -- 成功
  • winSCP 同时使用两个键 -- 错误
  • ssh -l user -i abc.pem user@ip
    ——有时有效*

显然我弄乱了

~/.ssh/authorized_keys
文件,并且 .PEM 密钥不允许连接实例。

此时authorized_keys文件有一行像这样:

ssh-rsa AAAAB3Nza....

然后我做了

chmod 400 abc.pem
并尝试了以下操作:

我尝试过:

  • 来自本地机器
    ssh -l ubuntu -i abc.pem ubuntu@ip
  • 带有 chmod-ed pem 密钥的 Mobaxterm
  • winscp 带有 chmod-ed pem 和 ppk 密钥
  • 复制服务器中.ssh/文件夹中的pem密钥,然后
    ssh-add ~/keyfile.pem
    • 第一个回答:
      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'cola-aws-ohio-key.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored.
    • chmod 400
      后第二次尝试:
      Identity added: cola-aws-ohio-key.pem (cola-aws-ohio-key.pem)
    • ~/.ssh/authorized_keys
      看起来和以前一样
    • 重启实例
    • 尝试从 mobaXterm 重新连接:失败
  • 启动一个新实例并使用 chmod-ed pem 密钥:失败

关于如何解决这个问题有什么想法吗?奇怪的是,ppk 密钥(从 pem 文件派生)可以工作,但原始的 pem 密钥却不能。

amazon-ec2 ssh putty ssh-keys pem
2个回答
0
投票

amazon linux 2023 和 ubuntu 22 用户更新版本的 openssl, 您需要获取更新的密钥 ssh-keygen -o -a 100 -t ed25519


-1
投票

以下是我在多次解决方法后解决问题的方法:

  1. 更新了 MobaXterm——我知道

  2. 确保 a.pem 权限。我也在 Windows 上使用 WSL。 文件的权限是

    -rwxrwxrwx
    但应该是
    -r--------
    -r--r--r--
    也适用于我)

我尝试了 chmod 400 a.pem,它仅在文件位于 Ubuntu/Linux 内部文件夹 (

~
) 上时有效,而不是在 Windows 共享文件夹 (
/mnt/c/...
) 上。但是,当我尝试将文件从 Ubuntu/Linux 内部文件夹复制到 Windows(MobaXterm 可以使用它)时,权限又变回
-rwxrwxrwx

我也尝试过:

  • 在 Ubuntu 上压缩并 tar 密钥,并在 Windows 上解压缩:失败
  • 从 Ubuntu 上传到 Github 并在 Windows 中下载:失败
  • 在 Windows 上手动更改权限:失败

因此,我使用 PowerShell 作为管理员更改了 Windows 中的权限,使用以下代码

cd C:\mydir
icacls.exe a.pem /reset
icacls.exe a.pem /grant:r "$($env:username):(r)"
icacls.exe a.pem /inheritance:r

显然,更新 MobaXterm 和确定文件权限的结合就是其工作方式

© www.soinside.com 2019 - 2024. All rights reserved.