Windows环境下如何通过aws ec2 create-key-pair命令生成PEM文件?
在Windows系统中生成AWS密钥对PEM文件的方法
我之前也碰到过一模一样的情况——用AWS CLI创建密钥对后,控制台只返回带PEM内容的JSON,完全没自动生成本地文件。别担心,按下面的步骤就能轻松搞定:
方法一:手动创建(适合新手)
- 首先,从返回的JSON里完整复制
KeyMaterial字段的值,一定要确保包含开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----(你的示例内容没写完,实际API返回会有完整的结尾标记)。注意把JSON里的\n换成实际的换行符,或者更简单的是重新执行命令时加上--query "KeyMaterial" --output text,这样返回的就是纯文本格式的PEM内容,没有转义字符,复制起来更省心。 - 打开Windows记事本,粘贴刚才复制的完整PEM内容。
- 点击「文件」→「另存为」,文件名填
MyKeyPair.pem,必须把保存类型改成「所有文件」(不然会默认存成txt格式),编码选择「UTF-8」,然后选一个你方便找到的路径(比如桌面)。 - 关键步骤:设置文件权限。Windows下SSH客户端会严格要求密钥文件只有当前用户能访问,否则会报错拒绝使用。操作如下:
- 右键PEM文件,选择「属性」→「安全」选项卡。
- 点击「高级」,然后点击「禁用继承」,选择「从此对象中删除所有继承的权限」。
- 点击「添加」→「选择主体」,输入你的Windows用户名,点击「检查名称」确认无误后点「确定」。
- 在权限列表里勾选「完全控制」(至少要勾选「读取」权限),然后依次点击「应用」→「确定」保存设置。
方法二:用PowerShell自动生成(高效快捷)
如果经常需要创建密钥对,用PowerShell命令可以一步到位,省去手动复制粘贴的麻烦:
- 执行创建密钥对的命令,同时直接提取PEM内容并写入文件:
# 替换为你想要的密钥对名称和保存路径 $keyName = "MyKeyPair" $savePath = "C:\Users\YourUsername\Desktop\$keyName.pem" # 创建密钥对并将PEM内容写入本地文件 $keyMaterial = aws ec2 create-key-pair --key-name $keyName --query "KeyMaterial" --output text $keyMaterial | Out-File -FilePath $savePath -Encoding utf8
- 接着用PowerShell自动设置文件权限(和手动步骤效果完全一致):
$acl = Get-Acl $savePath # 禁用继承的权限规则 $acl.SetAccessRuleProtection($true, $false) # 获取当前登录的Windows用户 $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name # 添加当前用户的读取权限 $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule( $currentUser, "Read", "None", "None", "Allow" ) $acl.SetAccessRule($accessRule) # 应用权限设置到文件 Set-Acl $savePath $acl
补充说明
AWS CLI默认不会自动生成本地PEM文件,因为它本质只是返回EC2 API的响应内容。通过--query "KeyMaterial" --output text参数,可以直接获取纯文本格式的PEM内容,省去了手动处理JSON转义字符的麻烦。
内容的提问来源于stack exchange,提问作者Jon Sud
相关产品推荐
相关产品推荐

