Experiment

云服务器搭建

云服务器搭建

Wm1NlkN

Wm1NlkN

2026年8月19日 · 15 min read


本文记录一次从零开始配置阿里云 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  #开启公钥认证
修改SSH配置
修改SSH配置

改完配置以后,先先检查最终生效的配置:

sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|port'
得到
检查配置是否生效
检查配置是否生效
符合预期要求。

这个时候我们测试root是否真的被禁用了

ssh -i ~/.ssh/私钥文件.pem root@公网IP
得到
root SSH登录被禁用
root SSH登录被禁用
root登录被禁止。

此时的登录逻辑变为:

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分区成功建立
Swap分区成功建立
出现swap即成功。

为了让服务器重启之后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,然后即可查看机器配置。
hyfetch工具查看机器配置
hyfetch工具查看机器配置
终端输入cat /etc/os-release查看 Ubuntu 版本:
Ubuntu版本
Ubuntu版本
lscpu查看CPU:
CPU
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 就拿来:折腾。 毕竟好不容易拥有了一台属于自己的服务器,不拿来折腾一下,多少有点对不起这台机器。😋