以下操作仅在 ubuntu 系统上试验

写在前面

首先声明,我一般购买 VPS 都是用来构建自部署的应用的,所以这套配置并不一定适用于所有人,大家可以按需查看。

配置 ssh 登录选项

我喜欢同时用密钥登录和密码登录,一般个人电脑都是密钥登录,如果是公用的电脑就用密码登录。首先先通过密码连接 VPS

ssh <user>@<host> -p 22

按照提示输入密码,进入控制台,然后执行

passwd

修改成强密码,如果在购买 VPS 的时候就可以自定义密码,可以设置成强密码然后忽略这一步。
本地电脑如果没有 ssh 密钥,可以生成一对并将公钥上传到 VPS 上

ssh-keygen -t ed25519
ssh-copy-id <user>@<host> -p 22

然后按需输入密码,最后修改 sshd 的配置文件,我的建议是在/etc/ssh/sshd_config.d文件夹中创建一个self.conf,然后写入以下内容

Port 22
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes

如果你不希望 root 用户远程登录,请将PermitRootLogin设置为no
之后执行下面的命令即可

systemctl restart ssh

关闭外部安全组

有许多厂商有自己的安全组保护 VPS,但是对于个人来说,遭受攻击的可能性很小,可以只使用原生的ufw功能。此外,我喜欢通过系统 Terminal 或者其他终端模拟器远程连接 VPS,执行各种操作也比较方便。如果使用外部安全组,制定规则的时候还需要去厂商的网页上操作,很麻烦。
在关闭了外部安全组以后,就需要启动ufw了,平常我用不到 ipv6 功能,所以直接关闭 ipv6 连接,编辑/etc/default/ufw文件,设置ipv6=no
最后执行下面的命令即可

ufw allow 22 comment ssh
ufw enable

修改 hostname

对于强迫症来说,是不能接受终端命令提示符的旁边有一串巨长的乱码的,我喜欢改成自己能辨识的,简洁的名字。命令也很简单

hostnamectl set-hostname <new-hostname>

再编辑etc/hosts文件,修改为以下样式即可

127.0.1.1 <new-hostname>
127.0.0.1 localhost

如果你有多台在同一局域网下载机器的话,还是谨慎修改 hostname 吧。

调整时区

调整到正确的时区能让各种日志显示的时间变得已读,中国用户可以用一条命令解决。

timedatectl set-timezone Asia/Shanghai

下载 docker

因为我的 VPS 主要是用来搭建应用的,所以 docker 必不可少,这部分建议参考官方文档,我只是把官方文档的命令粘了过来。

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

给 VPS 取名便于连接

本人最喜欢用的终端模拟器是 MacOS 系统下的 Warp,所以一般 ssh 连接的时候也用 Warp,没有用专门的 ssh 软件(Termius 当作备用)。但是每次都要输入ssh <user>@<host>不是很方便,host 用 IP 的话记不住,还得去 1Password 中复制,用域名的话也显得冗长,所以可以把常用的 ssh 连接起一个别名,输入别名就简单多了,比如我只有一台常用的香港服务器,就可以编辑~/.ssh/config文件,并添加以下内容

Host hk
HostName <IP>
User <user>
Port 22

以后每次在命令行输入下面的内容即可

ssh hk