前言:我不是 Linux 用户。我是一名 Web 开发人员,正在尝试通过 WSL 通过 SSH 连接到 Ec2 实例。我从之前的开发人员(他离开了公司)的机器上找到了 .pem 文件,并将副本移动到了我的计算机上。每次我尝试通过 WSL 通过 SSH 连接到 ec2 实例时,都会出现权限被拒绝的情况。
在 Windows 中,我从文件中删除了 SYSTEM 和本地机器权限,将 Linux 所有权留给了我(我认为),禁用了继承功能并保留了完全控制权,见图:
这是因为 AWS 表示 pem 文件过于开放,文件使用权限 0555。我以 root 身份进入我的 wsl。我查看了 ec2key1.pem 文件的权限并看到以下内容:
---------- 1 "myusername" "myusername" 1696 Nov 22 2019 ec2key1.pem
我怀疑我无法使用 .pem 文件进行 ssh,因为 SSH 客户端无法读取 ec2key1.pem,因为该文件没有执行此操作的权限?
因此,我尝试以 root 身份执行 chown、chmod、chattr 命令。它们都返回更改文件 ec2key1.pem 的权限、权限被拒绝、chattr 无法读取标志。
- 我可以做些什么来改变 pem 文件的权限?
- windows文件权限能体现在linux文件权限里吗?
- 我唯一能想到的另一件事是使用新的 SSH 密钥创建 ec2 实例的新实例?
- 或者我应该尝试将前一个开发人员计算机上文件的所有权更改为我,然后将文件的副本移动到我的计算机上?我在 stack overflow 上看到了一些关于访问控制列表 (ACL) 的内容,我可以在前一个开发人员的机器 linux 上使用它们吗?
此处绘图为空白。
答案1
是权限问题!这更多的是 Windows 问题,而不是 WSL 问题。
不要尝试使用 root wsl 更改权限:
- 我在 .pem 文件上重新启用了继承功能(在 Windows 资源管理器中右键单击文件 >> 属性 >> 安全选项卡 >> 高级)
- 重新添加我的 Windows 本地用户并授予其完全控制权。
完成更改后,我退出 wsl 并进入 cmd 中的常规 C:/,我能够使用 AWS 中的 SSH 客户端指令通过 ssh 进入我的 Ec2 实例。
- windows文件权限能体现在linux文件权限里吗?
是的。关闭与 EC2 实例的连接后,我返回 WSL 并检查了 pem 文件的权限。权限更改为:
-r-xr-xr-x 1 "myusername" "myusername" 1696 Nov 22 2019 ec2key1.pem