WSL2中无法修改EC2连接.pem文件权限,无法连接实例求助
解决.pem文件权限无法修改导致EC2连接失败的问题
问题根源
如果你的.pem文件存放在Windows挂载到WSL2的目录(比如/mnt/c/、/mnt/d/下),或者Git Bash直接操作Windows文件系统中的文件,Windows的权限机制会覆盖Linux的权限设置,导致chmod 400命令无法生效,始终显示-r--r--r--(即0444权限)。
针对WSL2-Ubuntu的解决方案
- 方案1:将.pem文件移动到WSL2原生文件系统
- 复制文件到WSL2主目录:
cp /mnt/c/xxx/xxxxxx.pem ~/ - 修改权限:
chmod 400 ~/xxxxxx.pem - 使用该文件连接EC2:
ssh -i ~/xxxxxx.pem ec2-user@ec2-x54-xxx-xxx-xxx.compute-1.amazonaws.com
- 复制文件到WSL2主目录:
- 方案2:修改WSL2挂载权限配置
编辑/etc/wsl.conf文件(无则创建):
添加以下内容,让WSL2挂载Windows目录时采用Linux权限控制:sudo nano /etc/wsl.conf
保存后在Windows命令行执行[automount] enabled = true options = "metadata,umask=0077" mountFsTab = falsewsl --shutdown关闭WSL2,重启后再执行chmod 400 xxxxxx.pem即可生效。
针对Git Bash的解决方案
- 方案1:将.pem文件移动到Git Bash用户目录
- 复制文件到Git Bash主目录:
cp /d/xxx/xxxxxx.pem ~/ - 修改权限:
chmod 400 ~/xxxxxx.pem - 使用该文件连接EC2。
- 复制文件到Git Bash主目录:
- 方案2:通过Windows权限管理器调整
- 右键.pem文件 → 属性 → 安全选项卡 → 高级。
- 点击“禁用继承”,选择“从此对象中删除所有继承的权限”。
- 添加当前用户,仅赋予“读取”权限,删除其他所有用户/组的权限。
- 返回Git Bash重新尝试连接,此时权限会被识别为符合要求的状态。
验证权限修改结果
执行以下命令查看权限,显示-r--------即为正确的400权限:
ls -l xxxxxx.pem
内容的提问来源于stack exchange,提问作者ClickOps
相关产品推荐
相关产品推荐

