零门槛入门EC2!教你分分钟SSH远程登录Amazon EC2服务器
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个月:
亚马逊云科技中国区域免费套餐: https://www.amazonaws.cn/free/
服务器的话,原则上建议使用Linux系统,不建议使用Windows Server系统,尤其是在你选配的EC2配置未达到4G内存的时候)
Amazon账号注册
为了尽可能照顾更多的用户,我们这里讲解一下Amazon账号的注册的注意事项:
☞新用户认证时候,一定需要使用实体的信用卡,最好是Visa信用卡
这个真的很重要,如果你使用的是虚拟信用卡,可能导致账户被永久封禁…… 为什么我知道呢? 因为我的第一个账号就被永久封禁了:
Amazon被永久封禁
使用银行卡进行身份验证后,需要一定时间的等待:
Amazon免费试用
遇到这个情况,耐心等待即可。
SSH软件推荐
为什么使用SSH进行EC2等Linux服务器的远程登录呢? SSH远程登录的逻辑是这样的:
实际上就是使用SSH的客户端,连接EC2服务器上的SSH服务端,建立加密通讯,实现远程命令行控制。
在SSH登录服务器后,原本的控制台,就是服务器的控制台了:
Amazon控制台
所以,新用户一定要注意⚠️。
这里给大家介绍一下各个平台上可以用于SSH的软件,软件非常多,这里只是列举一些我觉得简单、好用的。
Windows平台
考虑到用Windows平台的人非常多,这里介绍一下Windows平台可以用什么软件SSH:
1、Win10/Win11: Windows Terminal(Windows终端),Win11自带的终端软件,Win10可以在自带的微软商店进行下载,或者在Githuh项目地址进行下载。
2、Win全平台: Putty非常轻量的SSH工具,就是UI可能对新手不是非常友好。
3、Linux/macOS/Win全平台: Termius全平台SSH工具,支持多平台同步,就是付费,而且价格不便宜;建议高端玩家入手。
Windows自带的SSH工具
支持全平台的SSH工具
macOS平台
macOS平台,使用的软件很多,我个人比较喜欢:
1、自带软件Terminal: macOS自带的Terminal就带有OpenSSL和OpenSSH,可以建议SSH通信。
2、iTerm2: 非常不错的第三方Terminal软件,相比自带的Terminal更加好用。
3、ServerCat: 这个软件后期如果使用Docker,非常方便查看容器的状态;当然也是可以SSH的。可以在AppStore内找到。
macOS自带的SSH工具
Linux平台
Linux自带的SSH工具
其他Linux发行版本一般也是“如法炮制”。
快速SSH登录
现在,教程正式开始,先讲解最简单的;其实EC2在初始化的过程中,就是让我们创建免费SSL证书,用于后续EC2初始化完毕后,使用SSH进行证书登录。
部署新的实例
在密钥对(登录)中,我们选择创建RSA密钥对,一会进行默认用户的SSH的远程登录:
创建密钥对
创建好后,私钥会自动下载:
创建并下载下来的密钥
关于安全组,如果你是第一次使用服务器,那么我建议你刚开始可以放行所有端口,后续学习差不多再按需放行;如果你已经对安全组轻车熟路,那么需要放行SSH的默认端口22:
一定放行SSH端口
在创建服务器后,就可以使用公网的IPv4进行登录(这里我分配了弹性IP):
公网IPV4
打开我们本地的SSH工具。macOS和Linux用户可直接使用自带的Terminal工具;Windows11可以使用自带的Windows Terminal(Windows10可以在自带的应用商店内找到Windows Terminal)。
连接的SSH命令:
1 | ssh admin@<Amazon EC2S的IP> -i <RSA地址>BASH |
其中:
admin为Amazon服务器默认用户;
<AWS的IP>为上文我们创建的EC2公网IP;
<RSA地址>为上文我们创建并自动下载的密钥对。
比如我远程登录成功:
使用RSA远程登录成功
到此,我们的SSH远程登录服务器就完成了。
登录好以后,记得更新软件包管理器,第一次使用最好再进行一次软件更新:
1 | sudo apt update -y |
接下来,我们来看看SSH的更高级方法。
EC2服务端SSH配置
默认情况下,SSH服务端的配置是Linux服务器的:
1 | /etc/ssh/sshd_configBASH |
我们可以使用vim命令进行编辑,编辑好后,使用systemctl进行sshd(SSH服务端)的重载:
1 | sudo systemctl restart sshdBASH |
接下来,我们就来看看SSH的一些常用配置。方便在EC2上更流畅地使用SSH。如果你想更加了解vim,可以参考教程:
终端文本编辑神器–Vim命令详解。如何配置Vim以及Vim插件?: https://www.mintimate.cn/2021/08/25/vim/
允许密码登录
如果你先创建一个用户,并且使用密码进行ssh的登录,而不是使用密钥登录。那么你可以这样操作:
1 | # 创建一个用户,用来后续ssh登录 |
EC2添加一个新的用户
新用户需要注意,passwd为用户进行密码的更改,输入的密码会自动隐藏。
这个时候,我们还是不能登录的,因为EC2默认SSH服务端是不允许密码登录的,只允许密码登录。我们需要修改/etc/ssh/sshd_config的配置:
1 | # 使用 vim 进行编辑 |
添加内容:
1 | PasswordAuthentication yesTXT |
允许使用密码进行登录
保存后,重新启动sshd服务:
1 | sudo systemctl restart sshdBASH |
完成这些后,我们就可以使用用户进行密码登录了:
1 | ssh 『用户名』@『EC2的公网IP』BASH |
比如:
使用密码进行SSH登录
如果你想重新只允许密钥登录,把PasswordAuthentication yes设置为PasswordAuthentication no或者删除即可。
其他用户使用证书登录
其他用户如何使用证书进行登录呢?这边我们还是使用刚刚创建的demo用户进行演示,这次就在Windows上进行操作。
首先使用OpenSSL生成密钥对,用于后续SSH证书登录:
1 | ssh-keygenBASH |
使用OpenSSL生成密钥对
macOS、Linux同样也自带OpenSSL,都可以使用这个命令生成密钥对。
找到生成的公钥文件:
OpenSSL生成的公钥文件
登录我们的服务器,在家目录($HOME)内创建.ssh目录,并创建authorized_keys文件,将刚刚公钥文件内容添加进去:
1 | # 创建.ssh文件夹 |
创建SSH文件夹
添加好公钥的结果:
添加好公钥
这个时候就可以进行登录了:
使用密钥登录
禁止Root用户登录
通常情况,我们如果开启了密码登录,那么使用root用户最好禁用密码登录:
1 | # 编辑SSH服务端配置 |
找到以下两行配置:
1 | #PermitRootLogin yes |
将这两行的注释符号“#”去除,然后修改配置为:
1 | PermitRootLogin without-password |
将PermitRootLogin设置为without-password意味着root用户只能使用证书登录,不能使用密码登录;将PasswordAuthentication设置为yes意味着允许通过密码登录;但是PermitRootLogin的优先级高于PasswordAuthentication。
高级: 远程用户组
其实SSH的高级操作很多。这里给大家介绍一点点高级的方法。我们在EC2上,可能有多个用户,如何控制只有某些用户可以使用SSH进行远程登录呢?
很简单,创建一个用户组,为设置这个用户组可以使用SSH服务端权限;需要进行远程登录的,就把用户的附加组内加入我们设置的这个用户组:
操作起来,就是:
1 | # 新建用户组 |
添加远程登录用户组
最后,在SSH服务端的配置上,加上AllowGroups的配置:
1 | AllowGroups 『远程用户组』BASH |
配置AllowGroups
记得重启sshd服务哦。
测试一下,顺利的话,就成功了:
测试成功
我们的教程到此就结束了,希望你在你的云端之旅中有所收获,也希望你能更轻松地入门EC2。
其实EC2就是一个标准的Linux,大家还可以发挥自己的想象,进一步发挥EC2的潜能。