引言
由于工作的需要,所以需要去学习下AWS相关的知识,所以自己注册了一个AWS的账号去进行学习。
问题发现
按照启动ec2实例的步骤:选择镜像->选择系统配置->配置密钥对->配置安全组->设置存储卷大小->启动实例
在上述操作完成后,等待EC2的实例状态变为正在运行,我就在本机使用xshell去进行连接了,但是连接时出现了如下错误:
在网上寻找了许多资料,都没找到相关的,大部分都是说啥登录用户名之错误类的。后来经过使用本机的ssh去进行登录,发现其报错如下:
问题解决
在官网提供的连接问题排查示例中找到了使用ssh报错相关的解决方案,其详细信息如下:
必须保护您的私钥文件,防止其他任何用户对其进行读写操作。如果除您外其他任何人都能够读取或写入您的私钥,则 SSH 会忽略您的密钥,并且您会看到以下警告消息。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '.ssh/my_private_key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ssh/my_private_key.pem
Permission denied (publickey).
如果在尝试登录到您的实例时看到类似的消息,请检查此错误消息的第一行,验证您为实例使用的公钥是否正确。上述示例利用 .ssh/my_private_key.pem
文件权限使用私钥 0777
,这可使任何人都能读取或写入此文件。此权限级别非常不安全,因此 SSH 会忽略此密钥。
如果从 MacOS 或 Linux 连接,请运行以下命令以修复此错误,替入您的私有密钥文件的路径。
[ec2-user ~]$ chmod 0400 .ssh/my_private_key.pem
如果要从 Windows 连接,请在您的本地计算机上执行以下步骤。
- 导航到您的 .pem 文件。
- 右键单击 .pem 文件并选择 Properties (属性)。
- 选择安全性选项卡。
- 选择 Advanced (高级)。
- 验证您是否是文件的所有者。如果不是,请将所有者更改为您的用户名。
- 选择 Disable inheritance (禁用继承) 和 Remove all inherited permissions from this object (从此对象中删除所有继承的权限)。
- 选择 Add (添加)、Select a principal (选择委托人),输入您的用户名,然后选择 OK (确定)。
- 从 Permission Entry (权限条目) 窗口,授予 Read (读取) 权限,然后选择 OK (确定)。
- 单击 Apply(应用)以确保所有设置都已保存。
- 选择 OK (确定) 关闭 Advanced Security Settings (高级安全设置) 窗口。
- 选择 OK (确定) 关闭 Properties (属性) 窗口。
- 您应该能够通过 SSH 从 Windows 连接到 Linux 实例。
从 Windows 命令提示符处运行以下命令。
-
在命令提示符下,导航到 .pem 文件的文件路径位置。
-
运行以下命令以重置和删除显式权限:
icacls.exe $path /reset
-
运行以下命令以向当前用户授予读取权限:
icacls.exe $path /GRANT:R "$($env:USERNAME):(R)"
-
运行以下命令以禁用继承并删除继承的权限。
icacls.exe $path /inheritance:r
-
您应该能够通过 SSH 从 Windows 连接到 Linux 实例。
通过这种方式可以通过SSH从windows连接到Linux实例了,但是还是无法在Xshell中去进行连接。
经过一段时间的排查,发现是由于EC2的实例镜像的问题导致的无法使用Xshell连接,在更换EC2镜像后就可以使用Xshell去进行连接了。