【问题标题】:Password protect a pem file密码保护 pem 文件
【发布时间】:2018-05-15 22:08:58
【问题描述】:

我想使用受密码保护的 pem 文件通过 SSH 连接到我的 EC2 实例。如何使用密码保护 pem 文件?我过去做过这个,但不记得我是怎么做到的。我拿了一个由 AWS 生成的 pem 文件并在上面运行了一些命令,它生成了如下所示的内容:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,<BlahBlahBlah>

<encrypted stuff is here>

-----END RSA PRIVATE KEY-----

然后,当我 SSH 进入该框时,我指定了受密码保护的 pem 文件,它要求我在解密和 SSH 之前输入密码。

我发现了这个:https://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

告诉我使用这个命令

ssh-keygen -t rsa -N 'super secret passphrase' -f test_rsa_key

但生成的加密文件(具有我正在寻找的正确标题)似乎不起作用。我收到“权限被拒绝(公钥)”。当我尝试使用该加密的 pem 文件进行 ssh 时。我可以使用未加密的 pem 文件通过 SSH 连接到盒子。

【问题讨论】:

    标签: amazon-web-services encryption amazon-ec2 pem ssh-keygen


    【解决方案1】:

    这是因为您使用的命令会生成一个新的密钥对,而不是保护您现有的私钥。

    尝试使用ssh-keygen-p选项

    ssh-keygen -p -f my_private_key
    

    它会提示您输入密码并保护您的私钥。

    Enter new passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved with the new passphrase.
    

    现在如果你在ssh 中使用my_private_key,它会提示输入密码并且成功。

     -p      Requests changing the passphrase of a private key file instead of
             creating a new private key.  The program will prompt for the file
             containing the private key, for the old passphrase, and twice for
             the new passphrase.
    

    【讨论】:

    • 太棒了,成功了!谢谢。任何想法为什么我来自一个区域的 pem 文件在另一个区域不起作用?我四处询问,似乎它应该工作。我什至选择了“使用已经存在的 pem 文件”,并且必须选中框说是的,我有 pem 文件。
    • 区域之间不共享私钥,除非您在所有区域上传了相同的对应公钥。
    • 区域之间不共享,尽管他们给了我选择它的选项?也许我错过了一些说我需要上传公钥的细节。当他们让我选择它时,我以为我不需要
    • @LampShade 是什么让您可以选择它?您在 AWS 控制台中吗?密钥对是区域性的。如果您在 us-west-1 中启动并在 AWS 控制台中使用 EC2 启动向导,那么您将只会看到与 us-west-1 相关的密钥对。其他地区也是如此。
    • 如果有机会,我会向您发送一个屏幕截图,在设置 EC2 实例的最后,它要求创建一个新的 pem 文件或选择一个已经存在的文件。即使在另一个地区,它也让我可以选择一个已经存在的(我在另一个地区创建的)。但后来它没有用......这很奇怪。
    【解决方案2】:

    您可以安装和使用puttygen:

    sudo apt install putty
    

    要生成受保护的密钥,请执行以下操作:

    puttygen KEY_PAIR_PRIVATE.pem -O private-openssh -o KEY_PAIR_PRIVATE.key -P
    

    选项 -P 是为私钥设置一个新的密码。

    P.S:您可能需要设置使用密钥的权限,如下所示:

    sudo chmod 755 KEY_PAIR_PRIVATE.key
    

    最后您可以安全地访问您的 aws 实例:

    ssh -i KEY_PAIR_PRIVATE.key ubuntu@IP_EC2_INSTANCE_OR_HOSTNAME
    

    【讨论】: