Amazon Linux 2023 SSH连接问题

1,126 阅读4分钟

Amazon Linux 2023(简称AL2023)是亚马逊云(AWS)于2023年推出的全新的专为云优化的Linux,它主要运行在AWS云上,为客户带来更好的性能,更新的软件,更安全的用户体验。自AL2023 开始,Amazon Linux 新的主要版本会每两年发布一次,并提供五年的长期支持,每个版本都会提供标准支持(2 年)和维护(3 年)。

Amazon Linux 2023有如下几个大的更新

  • 基于全新的Linux 6.1内核,带来更好的硬件兼容性,支持更多的新硬件同时运行效率得到明显提升
  • 为ARM64架构的CPU带来大量的优化,尤其是AWS Graviton系列CPU
  • 引入了大量的最新的软件,
    • 编译工具链更新:gcc升级到11.3,glibc升级到2.34,binutils升级到2.39;后续的我们编译C/C++等代码会更快,支持更多的C/C++新特性,代码编译优化更好。
    • AWS自带的工具包的升级,比如AWS CLI, SSM Agent, Amazon Kinesis Agent和CloudFormation.
    • 更新的计算机语言的版本,比如JDK默认为Amazon Corretto JDK 11等
  • 它基于Fedora(主要是Fedora 34/35/36)并吸收了CentOS 9 Streams的一些特性,但是不完全基于Fedora和CentOS,也不存在和Fedora以及CentOS的版本强对应关系。AL2023基于上述2个Linux发行版并做了自己的一些优化和软件适配工作。在以往,Amazon Linux主要是基于CentOS的。详情请看AL2023 Relationship to Fedora
  • OpenSSL更新为OpenSSL 3,让我们的远程SSH连接更加安全,但是可能带来部分软件兼容性问题,导致旧版的SSH客户端无法连接。
  • 包管理器由YUM替换为DNF
  • 内核实时修补:AL2023提供了内核实时修补功能。该功能让您无需重新启动或停机即可修补 Linux 内核中的关键和重要安全漏洞
  • 更安全:AL2023 默认启用了SELinux,并将SELinux设置为permissive模式;此外AL2023 提供了预置安全策略,因此客户能够轻松实施通用行业准则。可以在启动或运行时对这些策略进行配置,包括将系统加密策略设置为 FUTURE 或 LEGACY、锁定 SELinux,以及将 SELinux 设置为强制或许可模式。

更多详情请看 Amazon Linux 2023 文档

SSH连接问题

AL2023带来的大量的更新给用户带来大量好处的同时,部分软件兼容性也是用户需要注意的不过在容器化时代这些问题都很好解决,可能明显影响用户上手效率的是SSH连接问题,这会导致用户首次使用的时候感觉到阻碍,实际上这是软件兼容性问题,并不是AL2023本身的问题。

我在使用的过程中,对SSH连接做了一些测试,情况如下

  • 使用Mac OS,命令行SSH完全正常
  • 使用Ubuntu 22.04 LTS/Linux,命令行SSH完全正常
  • 使用Windows 11,命令行SSH完全正常但是部分SSH工具异常,比如XShell 7

具体原因为AL2023默认禁用了ssh-rsa签名,默认客户端必须支持ssh-ed25519或者ecdsa-sha2-nistp256,详情见Default SSH server configuration

在windows 11上,XShell 7等一些SSH软件对OpenSSL 3还没有支持的非常好,当我们按照以前连接Amazon Linux 2的方式来进行连接时,会出现如下错误:客户端需要输入密码,但是本身我们没有任何密码可以输入,而且无论怎么输入也会连不上。 image.png

如果我们在Windows Powershell里面直接命令行连接,是正常的。 image.png

解决

  1. 创建新的key,并使用ED25519作为Key pair type;这样windows 11上的XShell等软件就可以正常连接了,PowerShell命令行也可以正常工作

image.png

  1. 换用其它SSH工具或者等待Windows上的现有SSH更新,或者使用powershell命令行连接,或者使用Windows WSL启动Linux来连接。
  2. 修改AL2023的SSH设置,重新启用ssh-rsa,这个不太建议,首先是安全性略微降低,其次是如果有大量的服务器二点话,手动执行效率低,管理复杂。修改方式见Default SSH server configuration