前言

VPS选购

  • 国内可选阿里云、腾讯云、狗云等。

  • 海外可选CloudCone、RackNerd、搬瓦工、Vultr等。

  • 免费可选甲骨文、AWS等。

备注:阿里云腾讯云有安全组来放行端口。cc没有,可以自己安装防火墙例如ufw。

登录VPS实例

首先购买VPS并创建实例,然后在服务商网站上VNC登录实例,通过账号密码登录。账号默认root,密码在服务商网站控制台或邮件中给出。密码登录不太安全,下面介绍两种SSH连接方式。

方法1:通过SSH远程连接

先在云控制台中重置密码

下载软件:FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.3.10,更新日期2023.12.31

(当然XFTP + XShell 也可以,但是这个更方便和直观)
【finalshell.png】

如图,新建SSH连接并输入主机信息,点击确定即可添加该VPS的连接。用户名默认root,主机IP和密码一般可在云服务商或邮箱内找到。

方法2:通过SSH密钥对连接

以阿里云为例。打开阿里云控制台首页,网络与安全->密钥对->创建密钥对->绑定密钥对->选取你的服务器实例,只需填个名称就好例如:ali_public_key。

此时会自动下载一个文件,ali_public_key.pem,建议把它放在本地计算机的C:/Users/XXXX/.ssh/里,XXXX是你的电脑用户名。

回到阿里云控制台首页,实例与镜像->实例->在你的实例项点击远程连接。

然后这时候能看到你的 网络连接-公网IP,记住它。

在刚才的.ssh/文件夹的config文件(没有就新建),添加以下内容

1
2
3
4
5
6
Host 8.138.119.94
HostName 8.138.119.94 # 这里改成你自己云服务器的公网IP。
User root
Port 22
ForwardAgent yes
IdentityFile "C:\Users\xxx你的计算机名\.ssh\ali_public_key.pem"

修改对应内容。

回到阿里云的远程连接页面,认证方式选择SSH密钥认证,私钥点击上传按钮,上传ali_public_key.pem文件,点击确定。

然后我们打开计算机的cmd,输入ssh root@你的公网IP,将SSH 客户端(本地主机)连接到远程主机,输入yes

1
2
3
4
5
6
7
8
PS C:\Users\Administrator> ssh root@8.138.119.94
The authenticity of host '8.138.119.94 (8.138.119.94)' can't be established.
ECDSA key fingerprint is SHA256:UudrcTL/T3uRsiZ+3cq5lFgyARTKE1fl2ZPl+8+6IAk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added '8.138.119.94' (ECDSA) to the list of known hosts.
Last login: Sat Feb 3 12:17:40 2024 from 47.96.60.211
Welcome to Alibaba Cloud Elastic Compute Service !

这样就算连接成功了。

如果重装了VPS的系统,登录时用相同的密钥连接,在运行窗口再次SSH连接远程主机时,会报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\Users\Administrator>ssh root@8.138.119.94
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:i8q+LtcWX0OvkJMEwyCGVPeL6ar63YPlcHaZaUnAAqM.
Please contact your system administrator.
Add correct host key in C:\\Users\\Administrator/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\Administrator/.ssh/known_hosts:4
ECDSA host key for 8.138.119.94 has changed and you have requested strict checking.
Host key verification failed.

只要找到C:\Users\计算机用户名\.ssh删除known_hosts,再次ssh连接就好了。

安装常用软件

在 Linux 使用过程中,经常会用到一些软件包及其指令,所以这里先安装上,免得报错。

1
2
3
apt update -y  # 更新系统软件包列表

apt install wget curl sudo vim git lsof -y # Debian 新装的系统比较干净,安装一些常用的软件

VPS性能测试

这里提供本人CloudCone DC1 2h2g小鸡的测试过程和数据。

测试完性能可以重装系统,或者手动DD为纯净系统。

查看IP是否可用/申请工单更换IP

首先先ping一下你的IP,如果超时,则IP被墙了,就摧毁实例,等几个小时别人买了这个台VPS你再买个新的再试试看其他IP是否可用。

或者直接花费$2换IP,点击cc官网顶部导航的Support->Support Tickets->Create New Ticket新建一个工单:

1
2
3
4
5
Subject:Change IP Request

Ticket:Hello, my VPS cannot be accessed in China. I'm willing to use the $2 in my account to change to an IP address that can be used in China. Thank you!

Related Instance:选择你的VPS

点击你的头像->Billing->Add funs,可选择Paypal或Alipay预存2美刀。

我是3小时内回复已受理,3天内回复已完成更换IP并给出新IP(工作日更快)。

站长工具 测试回国延时/全球 ping

测试网址:https://ping.chinaz.com/xxx.xxx.xxx.xxx ,将末尾改成你的VPS的IP。

通过站长工具的ping检测,可以快速和直观地了解你的服务器在国内各省和主要外国的访问延迟(分别1~2个测试节点)。红的再测几次可能就不红了。
【chinaz.png】

ping.pe测试全球延迟

测试网址:https://ping.pe/xxx.xxx.xxx.xxx ,将末尾改成你的VPS的IP。

可以测试VPS到国内外一些主要城市的延迟和丢包率,更好地了解自己服务器在全球范围内的访问体验。打开后让它测一会儿再看数据。

【图片ping-pe.png】

融合怪测评脚本

机器性能利用融合怪脚本(缝合了常用测试脚本)进行一次完整的测试就够了。Github项目地址:VPS融合怪服务器测评脚本

该脚本能测试 VPS 的 CPU、磁盘IO、流媒体解锁、端口25(邮箱)、三网回程、回程路由等数据

1
2
3
4
5
6
7
# 为避免各种奇怪bug,最好以root用户在/root下执行脚本

cd /

# 安装脚本 & 赋予执行权限 & 启动

curl -L https://github.com/spiritLHLS/ecs/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh

脚本启动后,选择1,进行一次完整测试。

第一次测试结果:https://paste.spiritlhl.net/u/m9cZml.txt

第二次测试结果:https://paste.spiritlhl.net/u/nfHN05.txt

流媒体检测

一键检测以下流媒体:Netflix、YouTube、BiliBili、TikTok、iQIYI、ChatGPT

我的结果是Netflex仅自制,B站No,其他Yes)

1
wget -qO- https://github.com/yeahwu/check/raw/main/check.sh | bash

硬件简单查看指令

1
2
3
4
5
6
7
8
9
10
11
12
13
# 系统内核 5.10.0-8-amd64
uname -r

# 系统版本 Debian GNU/Linux 11 (bullseye)
cat /etc/os-release

# CPU信息
lscpu
# Model name: Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
# CPU MHz: 2699.998

# 本机IP
curl ip.sb

性能测试完后,删除测试脚本:

1
2
3
4
5
6
7
# 列出文件清单

ls -la

# 找到.sh文件并删除

rm xxx.sh

安装Web服务器

服务器本身不提供web服务,需要安装web服务器软件。

可以选择安装 NginxNginx Proxy Manager。前者适合科班人员学习,后者适合非IT人士使用。

安装NPM可以查看文章:【VPS实用项目】Nginx 管理器 | Nginx Proxy Manager | 反向代理神器

安装Nginx(可选):

注意:装了Nginx Proxy Manager后,可以不装Nginx,否则80和443端口会冲突!当然也可以谷歌看看怎么解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 更新系统的软件包列表
sudo apt update

# 下载应用程序时安装 gnupg2 以获得安全的通信通道。
sudo apt install curl gnupg2 ca-certificates lsb-release debian-keyring

# 从 Nginx 获取官方签名密钥以验证软件包的真实性。
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

# 验证下载的文件是否包含正确的密钥;
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
# 输出应包含指纹:573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62,如果指纹不对,请删除该文件

# 在您的系统上注册并设置 Nginx 存储库以获得稳定的软件包,这对于生产和安全环境非常重要
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian lsb_release -cs nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

# 设置存储库固定以优先选择官方的包而不是发行版提供的包
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx

# 安装Nginx服务器
sudo apt update
sudo apt install nginx

基本指令

1
2
3
4
5
6
7
8
9
10
11
# 启动
sudo systemctl start nginx

# 查看
sudo systemctl status nginx

# 重启
sudo systemctl restart nginx

# 开机自启动
sudo systemctl enable nginx

可在浏览器输入VPS-IP:80查看Nginx的index页面

补充:

新版Nginx没有sites-available 和 sites-enabled目录,直接以在 conf.d 里配置default.conf 就好了

1
2
3
cd /etc/nginx/conf.d
cp default.conf default.conf.bak
vim default.conf

DD纯净系统(可选)

咕咕鸽的DD脚本我用不来,网上又找了个。

腾讯云一键dd脚本、Linux NetBoot一键脚本,支持Ubuntu、Debian和CentOS系统

添加 SWAP 虚拟内存(可选)

注意:VPS 的内存如果过小,建议设置一下 SWAP,一般设为内存的 1-1.5 倍即可,可以让系统运行更流畅!

CloudCone默认设置了1G的SWAP

1
2
3
4
root@lumengde:/# free -h
total used free shared buff/cache available
Mem: 1.9Gi 51Mi 1.8Gi 1.0Mi 93Mi 1.8Gi
Swap: 1.0Gi 0B 1.0Gi

设置 SWAP 可以用脚本:

1
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

选择 18,然后输入你想要扩容的数值即可。

添加新用户+赋予sudo权限+禁止root登录(可选)

提示:这是补充知识,学习一下即可。若是生产环境,最好禁一下root保证安全。

原因:VPS 默认用户名为root,默认端口22,公网IP已知,所以一旦密码被黑客破解,就能在你的服务器中肆意破坏。

目的:禁止root登录可以降低系统被黑客攻击的风险,增强服务器的安全性和稳定性。

好处:通过普通用户管理服务器,需要时通过sudo指令来提权,好处是限制了对系统的操作权限,减少了系统被破坏的风险。此外,一个用户对应一个业务,能降低业务之间的相互影响和干扰,便于管理。

例如:部署站点的管理员为www,Git仓库管理员为git

参考文章:

创建一个普通用户

1
adduser username

username 可自定义。然后输入对应的密码(不可见),基本信息直接回车就行。

授予普通用户sudo权限

1
2
3
4
5
# 获取修改权限
chmod 740 /etc/sudoers

# 编辑文件
vim /etc/sudoers

vim使用方法。vim指令打开文件后:

i进入编辑模式,此时文件可修改

修改完成按ESC退出编辑模式

按住 shift + : 出现冒号,输入**wq!**即可强制保存文件并退出。

w为保存,q为退出,!为强制

按住shift + insert为粘贴(笔记本的insert在小键盘的0那里)

找到以下内容:

1
2
## User privilege specification
root ALL=(ALL:ALL) ALL

在下方添加一行内容:username ALL=(ALL:ALL) ALL,然后 wq 保存退出。

1
2
# 还原修改权限
chmod 440 /etc/sudoers

刷新权限:

1
systemctl restart sshd

此时,普通用户使用 sudo 可以暂时获得root用户的权限,但只限于本条指令,以执行特定命令或访问特定文件。

禁止root登录

1
vim /etc/ssh/sshd_config

在最后找到 PermitRootLogin yes,把 yes 改为 no,然后 wq! 保存退出。

刷新权限:

1
systemctl restart sshd

补充知识

可以chmod 740 /etc/sudoers获取修改权限,然后修改文件,再 chmod 440 /etc/sudoers 修改为只读权限。sshd_config 同理。这种做法安全性高且操作可控。而 wq! 更快捷但是不安全,无法清晰地追踪修改历史。

whereis sudoers指令可以列出 sudoers 关键词在哪些路径里出现过

验证root登录

此时终端先断开当前连接,然后重新连接。会发现无法连接,即使你输入正确的密码,也无法连接。

在FinalShell中新建会话,以SSH远程连接方式登录,用户名和密码填刚才新加的,发现连接成功。

如果是SSH密钥对连接,可以用这个指令登录:ssh your_username@your_server_ip

验证sudo提权

1
2
3
4
5
6
7
8
9
10
11
romender@iZ7xvcu671mq0lrlzj6sbqZ:~$ ls -l /root
ls: cannot open directory '/root': Permission denied
romender@iZ7xvcu671mq0lrlzj6sbqZ:~$ sudo ls -l /root
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for romender:
total 0
romender@iZ7xvcu671mq0lrlzj6sbqZ:~$

普通用户查看root目录:ls -l /root,权限不够被拒绝。使用sudo提权:sudo ls -l /root,输入密码后可以查看,sudo授权成功。