Ubuntu系统开荒记录

本文是作者自用的 Ubuntu 操作系统(版本 24.04)服务器的一次开荒记录。

初始化

使用 SSH 接入系统

在本地计算机上使用安全终端(Secure Shell,SSH)连接到远程服务器。命令行运行:

1
ssh <用户名>@<服务器地址>

上述命令是使用用户名和普通密码进行身份认证的,运行命令后需要输入密码。

事实上,采用此身份验证方式具有一定的暴力破解风险,因此推荐采用密钥对进行身份验证(后文会提到)。

更新系统软件

更新所有系统包,确保拥有最新的安全补丁和功能。

1
2
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y

sudo 是“superuser do”的缩写,可以临时授权当前用户以其他用户的身份(默认 root)来执行命令,是一种提权操作。

apt 指的是 Advanced Package Tool,用于自动化管理软件包。

安装常用工具

常用的工具类软件包括:

  • 文本编辑器:
    • vim(经典预装)
    • nano(用户友好)
  • 任务管理器:
    • top(经典预装)
    • htop(用户友好)
  • 资源管理器:
    • ls(经典预装)
    • eza(用户友好)
  • 网络工具:
    • curl(多用于处理网络请求)
    • wget(多用于批量下载文件)
  • 版本控制系统:
    • git

运行以下命令即可安装软件:

1
sudo apt install <软件名> <软件名...> -y

配置 UFW 防火墙

Ubuntu 自带一个简易防火墙(Uncomplicated Firewall,UFW),可用于设置防火墙规则。先激活 UFW 并允许必要的功能:

1
2
3
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

如需使用 HTTP/HTTPS 等服务,应该开放额外的端口,例如:

1
2
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

定制化 SSH 功能

为了提高 SSH 的安全性和个性化程度,可以采取如下做法:

更改默认的 SSH 端口

更改默认的 SSH 端口(22)为其他端口,可能有利于提高安全性。打开 SSH 配置文件:

1
sudo nano /etc/ssh/sshd_config

找到 Port 字段,删除该行的注释符号 #(如有),然后修改该字段的值为其他端口(例如改为 Port 2222)。保存文件后,重启 SSH 服务:

1
sudo systemctl restart ssh

接着,在 UFW 中也进行相应的端口权限修改:

1
2
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp

下一次使用 SSH 连接服务器时,需要记得更换连接的端口。

采用密钥对身份验证

使用密钥对登录来代替普通密码登录,可以显著提高安全性。

首先,在本地生成密钥对。以 RSA 加密算法为例(当前可以更换为更安全的 ed25519 加密算法),在本地运行:

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

默认情况下,在 ~/.ssh/ 目录中会生成两个文件:id_rsaid_rsa.pub。前者是私钥,后者是公钥。

然后,将公钥上传到服务器。在本地运行:

1
ssh-copy-id -i ~/.ssh/id_rsa.pub <用户名>@<服务器地址>

ssh-copy-id 不可用时,可以将公钥内容手动复制到服务器的 ~/.ssh/authorized_keys 文件中。在服务器端运行以下命令:

1
2
3
4
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "<公钥内容>" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

打开 SSH 配置文件,修改以下参数:

1
2
PubkeyAuthentication yes
PasswordAuthentication no

最后,重启 SSH 服务。我们可以在本地新开一个终端来测试密钥对登录:

1
ssh -i <私钥路径> <用户名>@<服务器地址>

若私钥文件在本地保存到了默认路径 ~/.ssh/id_rsa ,则可以省略 -i <私钥路径> 参数。

延长会话存续时间

如需防止 SSH 会话在闲置一段时间后被自动关闭,我们可以延长会话的存续时间。打开 SSH 配置文件,修改以下参数:

1
2
ClientAliveInterval 60
ClientAliveCountMax 30

重启 SSH 服务,服务器所允许的客户端会话的存续时间就被设置为了 1800 秒

创建新用户

出于安全考虑,应该尽可能避免使用 root 用户进行常规操作。我们可以创建一个新的管理员用户:

1
2
sudo adduser newuser
sudo usermod -aG sudo newuser

安装运行环境

以下列举了一些运行环境的安装步骤。

Java

安装指定版本(以 v17.x 为例)的 Java JDK:

1
sudo apt install -y openjdk-17-jdk
1
java --version

Node.js

安装指定版本(以 v22.x 为例)的 Node.js 运行时:

1
2
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
1
2
node --version
npm --version

Python

自行编译指定版本(以 v3.8.20 为例)的 Python 运行时:

1
2
3
4
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev \
libffi-dev liblzma-dev python3-openssl git
1
2
3
4
mkdir ~/python38
cd ~/python38
wget https://www.python.org/ftp/python/3.8.20/Python-3.8.20.tgz
tar -xf Python-3.8.20.tgz
1
2
3
4
cd Python-3.8.20
./configure --enable-optimizations
make -j$(nproc)
sudo make install
1
python3.8 --version

配置命令别名

有时为了方便,会给某些命令设置别名(Alias),以便快捷调用。

临时别名

临时别名只在当前终端会话中有效,终端关闭后会失效。可直接在命令行中使用 alias 设置临时别名(例如将 gs 设置为 git status 的一个别名):

1
alias gs='git status'

永久别名

永久别名会生效于所有终端会话中,直到手动删除。这就需要将别名添加到用户的配置文件中。对于 bash 用户,编辑 .bashrc 文件:

1
nano ~/.bashrc

如果是 zsh 用户,所有针对 .bashrc 文件的操作都替换成 .zshrc 的即可。

在配置文件中新增一行,添加你需要的别名,例如:

1
alias gs='git status'

保存并退出文件后,执行以下命令使配置生效:

1
source ~/.bashrc

可以直接使用不带参数的 alias 命令查看当前会话中已设置的所有别名。

Author

Harry Huang

Posted on

2025-02-26

Updated on

2025-02-27

Licensed under

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×