零门槛入门EC2!教你分分钟SSH远程登录Amazon EC2服务器
本文最后更新于 2023年10月30日 上午
Amazon(Amazon Web Services)是亚马逊公司提供的集成式云计算平台,它可以为开发人员和系统集成专业人士提供众多的计算、存储、数据库、网络、分析、机器学习和应用服务。并且也是云计算领域的行业领导者之一,很多云服务的标准都是由Amazon建立和牵头的。
而Amazon的EC2,是很多新用户入门云计算的梦幻产品。产品价格合适,新用户还可以免费使用一年,而且用户可以用它学习Linux、了解如何SSH远程登录、配置Nginx、搭建网站;甚至是搭建自己的Docker中心仓库、K8S集群等等。中小企业,也经常拿EC2部署自己的服务。
本次教程,就教大家如何使用SSH远程登入自己的Amazon EC2服务器,助力大家成功上云。
Amazon的EC2
2006年,Amazon首次推出Amazon Web Services,目前被认为是第一个真正可用的商业云计算平台,与此同时亚马逊云科技正式推出了他们的前三款产品:EC2(弹性计算机云)、S3(简单存储服务)、SQS(简单队列服务),亚马逊云计算也成为了全球云计算领域的行业领导者之一。
本次的EC2产品,全称是Amazon Elastic Compute Cloud(EC2),一种基于虚拟化技术的弹性云计算服务,它允许用户在云中租用虚拟服务器实例来运行他们的应用程序。可以说自2006年上线开始,已经历时数十年,期间产品不断迭代,已经是非常成熟的产品;甚至夸张点说,目前的Google Cloud、阿里云等云计算厂商,都是看着Amazon“摸石头”过河推出了类似的弹性计算产品。
而且,EC2作为弹性产品。学生用户可以用它进行云计算的入门、个人应用的部署、学习虚拟化技术、弹性扩展等等。对于企业允许根据业务需求灵活地调整服务器实例的规模,弹性和可扩展性使企业能够快速响应市场需求,提供高性能的服务并节约成本。
此外,目前亚马逊云服务器Amazon EC2支持免费试用,最长可免费使用12个月:
服务器的话,原则上建议使用Linux系统,不建议使用Windows Server系统,尤其是在你选配的EC2配置未达到4G内存的时候:)
Amazon账号注册
为了尽可能照顾更多的用户,我们这里讲解一下Amazon账号的注册的注意事项:
- 新用户认证时候,一定需要使用实体的信用卡,最好是Visa信用卡
这个真的很重要,如果你使用的是虚拟信用卡,可能导致账户被永久封禁…… 为什么我知道呢? 因为我的第一个账号就被永久封禁了:
使用银行卡进行身份验证后,需要一定时间的等待:
遇到这个情况,耐心等待即可。
SSH软件推荐
为什么使用SSH进行EC2等Linux服务器的远程登录呢? SSH远程登录的逻辑是这样的:
sequenceDiagram
participant 客户端
participant 服务器
客户端->>服务器: 发起SSH连接请求
服务器->>客户端: 发送服务器的公钥给客户端
客户端->>服务器: 生成一个随机会话密钥,并使用服务器公钥加密发送给服务器
服务器->>客户端: 使用私钥解密会话密钥
客户端->>服务器: 发送加密的登录凭证(使用会话密钥加密)
服务器->>客户端: 使用会话密钥解密登录凭证,并进行验证
Note over 服务器: 验证登录凭证
服务器->>客户端: 返回验证结果给客户端
客户端->>服务器: 发送连接请求
服务器->>客户端: 确立连接并返回连接结果
实际上就是使用SSH的客户端,连接EC2服务器上的SSH服务端,建立加密通讯,实现远程命令行控制。
在SSH登录服务器后,原本的控制台,就是服务器的控制台了:
所以,新用户一定要注意⚠️。
这里给大家介绍一下各个平台上可以用于SSH的软件,软件非常多,这里只是列举一些我觉得简单、好用的。
Windows平台
考虑到用Windows平台的人非常多,这里介绍一下Windows平台可以用什么软件SSH:
- Win10/Win11: Windows Terminal(Windows终端),Win11自带的终端软件,Win10可以在自带的微软商店进行下载,或者在Githuh项目地址进行下载。
- Win全平台: Putty非常轻量的SSH工具,就是UI可能对新手不是非常友好。
- Linux/macOS/Win全平台: Termius全平台SSH工具,支持多平台同步,就是付费,而且价格不便宜;建议高端玩家入手。
macOS平台
macOS平台,使用的软件很多,我个人比较喜欢:
- 自带软件Terminal: macOS自带的Terminal就带有OpenSSL和OpenSSH,可以建议SSH通信。
- iTerm2: 非常不错的第三方Terminal软件,相比自带的Terminal更加好用。
- ServerCat: 这个软件后期如果使用Docker,非常方便查看容器的状态;当然也是可以SSH的。可以在AppStore内找到。
Linux平台
恩…… 既然都用Linux客户端发行版本了,那么也没什么好说的。使用自带的Terminal就是非常不错的软件。举个例子,使用Kali Linux:
其他Linux发行版本一般也是“如法炮制”。
快速SSH登录
现在,教程正式开始,先讲解最简单的;其实EC2在初始化的过程中,就是让我们创建SSL证书,用于后续EC2初始化完毕后,使用SSH进行证书登录。
在密钥对(登录)
中,我们选择创建RSA密钥对,一会进行默认用户的SSH的远程登录:
创建好后,私钥会自动下载:
关于安全组,如果你是第一次使用服务器,那么我建议你刚开始可以放行所有端口,后续学习差不多再按需放行;如果你已经对安全组轻车熟路,那么需要放行SSH的默认端口22:
在创建服务器后,就可以使用公网的IPv4进行登录(这里我分配了弹性IP):
打开我们本地的SSH工具。macOS和Linux用户可直接使用自带的Terminal工具;Windows11可以使用自带的Windows Terminal(Windows10可以在自带的应用商店内找到Windows Terminal)。
连接的SSH命令:
1 |
|
其中:
admin
为Amazon服务器默认用户;<AWS的IP>
为上文我们创建的EC2公网IP;<RSA地址>
为上文我们创建并自动下载的密钥对。
比如我远程登录成功:
到此,我们的SSH远程登录服务器就完成了。
登录好以后,记得更新软件包管理器,第一次使用最好再进行一次软件更新:
1 |
|
接下来,我们来看看SSH的更高级方法。
EC2服务端SSH配置
默认情况下,SSH服务端的配置是Linux服务器的:
1 |
|
我们可以使用vim
命令进行编辑,编辑好后,使用systemctl进行sshd(SSH服务端)的重载:
1 |
|
接下来,我们就来看看SSH的一些常用配置。方便在EC2上更流畅地使用SSH。如果你想更加了解vim,可以参考教程:
允许密码登录
如果你先创建一个用户,并且使用密码进行ssh的登录,而不是使用密钥登录。那么你可以这样操作:
1 |
|
新用户需要注意,
passwd
为用户进行密码的更改,输入的密码会自动隐藏。
这个时候,我们还是不能登录的,因为EC2默认SSH服务端是不允许密码登录的,只允许密码登录。我们需要修改/etc/ssh/sshd_config
的配置:
1 |
|
添加内容:
1 |
|
保存后,重新启动sshd服务:
1 |
|
完成这些后,我们就可以使用用户进行密码登录了:
1 |
|
比如:
如果你想重新只允许密钥登录,把PasswordAuthentication yes
设置为PasswordAuthentication no
或者删除即可。
其他用户使用证书登录
其他用户如何使用证书进行登录呢?这边我们还是使用刚刚创建的demo
用户进行演示,这次就在Windows上进行操作。
首先使用OpenSSL生成密钥对,用于后续SSH证书登录:
1 |
|
macOS、Linux同样也自带OpenSSL,都可以使用这个命令生成密钥对。
找到生成的公钥文件:
登录我们的服务器,在家目录($HOME)
内创建.ssh
目录,并创建authorized_keys
文件,将刚刚公钥文件内容添加进去:
1 |
|
添加好公钥的结果:
这个时候就可以进行登录了:
禁止Root用户登录
通常情况,我们如果开启了密码登录,那么使用root用户最好禁用密码登录:
1 |
|
找到以下两行配置:
1 |
|
将这两行的注释符号“#”去除,然后修改配置为:
1 |
|
将PermitRootLogin
设置为without-password
意味着root用户只能使用证书登录,不能使用密码登录;将PasswordAuthentication
设置为yes
意味着允许通过密码登录;但是PermitRootLogin
的优先级高于PasswordAuthentication
。
高级: 远程用户组
其实SSH的高级操作很多。这里给大家介绍一点点高级的方法。我们在EC2上,可能有多个用户,如何控制只有某些用户可以使用SSH进行远程登录呢?
很简单,创建一个用户组,为设置这个用户组可以使用SSH服务端权限;需要进行远程登录的,就把用户的附加组内加入我们设置的这个用户组:
graph LR
A[输入SSH命令登录远程服务器] --> B[验证客户端身份和凭据]
B --> C[建立SSH连接]
C --> E{是否在远程登录用户组内}
E --> D[SSH服务端验证身份和凭据]
D --> F[授予访问权限]
F --> G[登录到远程服务器]
E -->|否| H[拒绝访问]
style A fill:#C2E0C6,stroke:#026400,stroke-width:2px;
style B fill:#FFCC33,stroke:#C89309,stroke-width:2px;
style C fill:#9BC2E6,stroke:#095169,stroke-width:2px;
style D fill:#9BC2E6,stroke:#095169,stroke-width:2px;
style E fill:#FADBD8,stroke:#A93226,stroke-width:2px;
style F fill:#9BC2E6,stroke:#095169,stroke-width:2px;
style G fill:#F5F5F5,stroke:#000000,stroke-width:2px;
style H fill:#F5A9A9,stroke:#8C0D0D,stroke-width:2px;
操作起来,就是:
1 |
|
最后,在SSH服务端的配置上,加上AllowGroups
的配置:
1 |
|
记得重启sshd服务哦。
测试一下,顺利的话,就成功了:
END
我们的教程到此就结束了,希望你在你的云端之旅中有所收获,也希望你能更轻松地入门EC2。
其实EC2就是一个标准的Linux,大家还可以发挥自己的想象,进一步发挥EC2的潜能。
One More Thing!
亚马逊云科技中国区域免费套餐: https://www.amazonaws.cn/free/?sc_channel=seo&sc_campaign=blog912
感觉教程有用,欢迎在爱发电支持我们✪ω✪