本文记录一次从零开始配置阿里云 ECS 云服务器的过程,包括 Linux 用户管理、SSH 密钥登录、关闭 root 远程登录、关闭密码认证,配置安全自动更新等。
0x00 缘由
笔者从微信群小伙伴得知阿里云有大学生优惠活动,由于笔者早已垂涎拥有一台属于自己的服务器许久,所以就直接拿下开始美美配置了,在学校里就要练起来!
0x01 配置过程
1. 购买ECS。
首先就是在阿里云的网页勾选好配置的机器服务,这里还有一个小插曲:在勾选机器配置的时候忘记选择带宽大小了,导致阿里云没有为我新创建的机器分配公网IP。 于是当笔者满怀期待地打开Mac准备连接时:
ssh -i ~/.ssh/私钥文件.pem root@公网IP
结果发现—— 根本连不上。
后续查找原因的时候发现了这一问题。后续也是美美配置带宽峰值为100Mbps了😋
2. 配置 SSH密钥并登录服务器
构建机器时会自动要求配置公私密钥,私钥会由浏览器下载入/Download文件夹。为了使用方便及安全,执行mv指令将该文件由Download文件夹转移至~/.ssh文件夹下,这个时候就可以用ssh -i ~/.ssh/私钥文件.pem root@公网ip进行服务器连接登录了。
没有提示下载到Download也不用慌张,笔者尝试了好多次发现mac上的edge浏览器不会捕获私钥文件下载请求,转向Safari浏览器就能顺利下载了。这个时候要记得在云服务器厂商的ECS控制台把创建机器时使用的密钥对更改为新创建的、已下载到本地的密钥对。
如果是第一次连接,会看到类似:
The authenticity of host 'xxx.xxx.xxx.xxx' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
直接yes即可。
一切正常就会进入服务器:
root@iZbp1cjbyh6xzirb3cpqcfZ:~#
~ 表示当前位于 root 用户的家目录 /root,末尾的 # 则表示当前 Shell 具有 root 权限。
3. 创建普通用户授予sudo权限,并使用用户SSH登录(后续会禁用root用户的SSH登录和密码登录提升安全性)
! 一定要在新的终端中确认普通用户能够正常 SSH 登录,并确认
sudo正常工作后,再关闭 root 登录和密码认证。不要直接修改 SSH 配置后关闭当前唯一的 SSH 会话,否则一旦配置错误,可能把自己锁在服务器外面。
为了安全性考虑最好还是设置一个普通用户,禁止掉root用户的密码登录和ssh登录。
创建一个普通用户并将其加入sudo用户组:
adduser wnn #wnn为用户名称,可以随便起自己喜欢的
usermod -aG sudo wnn
创建完wnn用户之后还不能直接用ssh登录,因为本云服务器只有笔者使用,故笔者采用的是root账户的SSH Key共享认证给wnn用户。
创建.ssh:
mkdir -p /home/wnn/.ssh
设置权限:
chmod 700 /home/wnn/.ssh
将root用户的SSH公钥配置复制过去:
cp /root/.ssh/authorized_keys /home/wnn/.ssh/authorized_keys
修改文件所有者:
chown wnn:wnn /home/wnn/.ssh/authorized_keys
再设置权限:
chmod 600 /home/wnn/.ssh/authorized_keys
最终目录结构大概是:
/home/wnn/
└── .ssh/
└── authorized_keys
此时我们test一下能否用wnn SSH登录,新开一个terminal:
ssh -i ~/.ssh/私钥文件.pem wnn@公网IP
成功进入:
wnn@iZbp1cjbyh6xzirb3cpqcfZ:~$
测试一下sudo权限:
sudo whoami
输出root则代表普通用户 SSH 登录 + sudo 提权这一套已经通了。
4. SSH安全加固
编辑ssh文件:
sudo vim /etc/ssh/sshd_config
主要修改一下三个配置:
PermitRootLogin no #禁止root直接SSH登录
PasswordAuthentication no #禁止SSH密码登录
PubkeyAuthentication yes #开启公钥认证

改完配置以后,先先检查最终生效的配置:
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|port'
得到

这个时候我们测试root是否真的被禁用了
ssh -i ~/.ssh/私钥文件.pem root@公网IP
得到

此时的登录逻辑变为:
Mac
│
│ SSH Key
▼
wnn
│
│ sudo #需输入该用户密码
▼
root
至此,SSH基础安全加固完成。
5. 小内存机器进行swap配置
因笔者用300块优惠券只能免费租到年包2核+2G内存的机器,2G运存未免有些捉襟见肘,此时就需要利用硬盘进行Swap配置防止内存溢出程序直接OOM了。
创建Swap文件,笔者分配了2G:
sudo fallocate -l 2G /swapfile
修改权限:
sudo chmod 600 /swapfile
格式化为Swap:
sudo mkswap /swapfile
启用:
sudo swapon /swapfile
查看分区是否成功建立:
free -h

为了让服务器重启之后Swap依然存在,还需要修改 /etc/fstab:
sudo vim /etc/fstab
添加:
/swapfile none swap sw 0 0
这样以后服务器重启,Swap 会自动挂载。
不过需要注意,Swap 不是物理内存的替代品。它的速度远低于 RAM,主要作用是防止内存压力过大时系统直接崩掉,而不是拿来“扩容内存”的。频繁发生 Swap I/O 反而会显著降低系统性能。
6. 查看机器配置
执行sudo apt install -y hyfetch下载hyfetch工具,输入hyfetch后配置configuration,然后即可查看机器配置。

cat /etc/os-release查看 Ubuntu 版本:

lscpu查看CPU:

free -h查看内存:

df -h查看磁盘:

ss -lntup查看当前开放端口:

7. 优化登录命令
笔者感觉每次终端输入ssh -i ~/.ssh/私钥文件.pem wnn@公网IP过于繁琐,于是进行一些配置。
首先编辑Mac上的SSH配置:
vim ~/.ssh/config
加入
Host wnn
HostName xxx.xxx.xxx.xxx #公网IP
User wnn
IdentityFile ~/.ssh/私钥文件.pem
保存后赋权:
chmod 600 ~/.ssh/config
输入ssh wnn即可启动:

0x02 后续规划
因笔者网安专业,后续打算在上面部署一下安全实验的环境 理想结构为:
Mac
│
├── Burp Suite
├── Nmap
├── sqlmap
└── Kali
│
▼
ECS
│
Docker
│
┌────┼────┐
▼ ▼ ▼
靶场 Linux 其他实验环境
对服务器总体规划为:
我的个人项目
│
┌───────────┴───────────┐
│ │
个人博客 ECS
│ │
Vercel Ubuntu
│
Docker
│
┌─────────────┼─────────────┐
│ │ │
Go API 靶场
│ │ │
后端服务 数据库 安全实验
博客这种东西追求稳定,所以准备继续放 Vercel。 而 ECS 就拿来:折腾。 毕竟好不容易拥有了一台属于自己的服务器,不拿来折腾一下,多少有点对不起这台机器。😋