
你刚刚拿到了你第一台VPS的root密码和IP地址,感觉就像拿到了一辆崭新跑车的钥匙,对吗?CPU、内存、硬盘、带宽……所有的资源都属于你,那种“我的地盘我做主”的掌控感,简直让人沉醉。你可以随心所欲地在上面搭建网站、部署应用、运行代码,一个全新的数字世界正在你面前展开。
但是,朋友,先别急着踩下油门。我得告诉你一个残酷的现实:这辆崭新的跑车,现在正停在一条没有门禁、没有保安、龙蛇混杂的大街上。全世界成千上万的自动化程序(我们称之为“机器人”),正像无情的鲨鱼一样,在互联网的海洋里7×24小时不间断地扫描,寻找着像你这样刚刚“出厂”、没有任何防护的VPS。它们的目标很简单:猜出你的密码,控制你的服务器,然后用它去做一些见不得人的事,比如挖矿、发送垃圾邮件、或者作为攻击别人的跳板。
是不是有点不寒而栗?别怕。我们今天就是要用五个最关键、最有效的步骤,给你的这辆“跑车”建一个固若金汤的私人车库。这五个步骤,不是“建议”,而是“必须”。它们是你作为服务器主人的第一堂必修课。准备好了吗?让我们开始吧。
第一步:告别“万能钥匙”——创建你的专属管理员账户
当你第一次登录VPS时,你用的账户是root
。什么是root
?它就是这台服务器的“神”,拥有至高无上的权力,可以做任何事,包括一键删掉整个系统。你的服务商给你的,就是这把可以打开所有房间、所有保险柜的“万能钥匙”。
一直使用root
账户,就像你每天揣着整个小区的万能钥匙出门一样,一旦丢失或被偷,后果不堪设想。黑客们最喜欢攻击的目标,就是root
账户,因为只要攻破了它,就等于完全占领了你的服务器。
所以,我们的第一项任务,就是把这把“万能钥匙”锁进保险柜,然后为自己打造一个日常使用的、权限受控的专属钥匙。
具体操作:
1登录你的服务器。 打开你的终端(Mac/Linux)或SSH客户端(Windows用户推荐使用Xshell或PuTTY),输入以下命令:
Bash
ssh root@你的服务器IP地址
系统会提示你输入密码。输入服务商给你的那个复杂密码,成功登录。
2创建一个新用户。 我们来创建一个叫myadmin
的新用户(你可以换成任何你喜欢的名字,但避免使用admin
这种太容易被猜到的名字)。
Bash
adduser myadmin
系统会提示你为这个新用户设置密码,请设置一个强密码。然后会问你一些额外信息,比如全名、电话等,这些都可以直接按回车键跳过。
3赋予新用户管理员权限。 这个新用户现在还只是个“普通访客”,很多系统级的操作它都做不了。我们需要给它“提权”,让它能在需要的时候,临时扮演一下“神”的角色。这个提权的工具,就是大名鼎鼎的sudo
。
Bash
usermod -aG sudo myadmin
这条命令的意思是,将myadmin
这个用户,添加到sudo
这个用户组里。凡是在这个组里的用户,都可以在命令前加上sudo
来临时获取root
权限。这就好比,你把万能钥匙锁起来了,但你给了你的专属管家myadmin
一个授权——在需要的时候,他可以申请使用万能钥匙。
现在,退出当前的root
登录,用你的新账户重新登录一次,确保一切正常。
Bash
exit
ssh myadmin@你的服务器IP地址
成功登录后,尝试执行一个需要管理员权限的命令,比如更新系统软件包列表:
Bash
sudo apt update
系统会提示你输入myadmin
的密码(注意,不是root
的密码)。如果命令成功执行,那么恭喜你,第一步完美完成!从现在开始,请永远使用myadmin
这个账户登录和操作你的服务器。
第二步:扔掉数字锁,换上“生物识别”——配置SSH密钥登录
现在,我们虽然有了一个更安全的账户,但我们登录的方式依然是“密码”。密码这个东西,说实话,在今天的互联网环境下,就像个老旧的数字密码锁,总有被暴力破解的风险。无论你的密码多复杂,对于不知疲倦的计算机来说,只要有足够的时间,总能试出来。
我们要做的,就是彻底扔掉这个数字锁,换上一套独一无二的、无法被复制的“生物识别系统”。在服务器的世界里,这套系统就叫做“SSH密钥对”。
SSH密钥对由两部分组成:一个私钥(private key)和一个公钥(public key)。
- 私钥 (
id_rsa
): 它就像你的指纹或虹膜,绝对私密,存放在你自己的电脑上,决不能泄露给任何人。 - 公钥 (
id_rsa.pub
): 它可以被看作是记录了你指纹信息的“锁芯”。你可以把它复制给任何你信任的服务器。
当你尝试登录时,服务器会用它存有的“锁芯”(公钥)向你发一个“挑战”,只有你本地电脑上的“指纹”(私钥)才能正确回应这个挑战。整个过程无需输入密码,而且几乎不可能被破解。是不是听起来就安全感爆棚?
具体操作:
- 在你自己的电脑上生成密钥对。
- 如果你用的是Mac或Linux: 打开终端,输入以下命令:Bash
ssh-keygen -t rsa -b 4096
-t rsa
指定了加密算法,-b 4096
指定了密钥长度,4096位是目前非常安全的标准。然后一路按回车即可。它会在你本地电脑的~/.ssh/
目录下生成id_rsa
(私钥)和id_rsa.pub
(公钥)两个文件。 - 如果你用的是Windows: 推荐使用Xshell,它有非常方便的“用户密钥管理者”工具,可以一键生成密钥对,并自动保管。
- 如果你用的是Mac或Linux: 打开终端,输入以下命令:Bash
2将你的公钥上传到服务器。 这一步,就是把我们的“锁芯”安装到服务器的门上。最简单的方法是使用ssh-copy-id
命令(Mac/Linux)。
Bash
ssh-copy-id myadmin@你的服务器IP地址
系统会提示你输入myadmin
用户的密码。输入后,它会自动将你本地的公钥,追加到服务器上/home/myadmin/.ssh/authorized_keys
这个文件里。这个文件,就是服务器存放所有可信公钥的“钥匙库”。
3测试密钥登录。 再次尝试登录服务器:
Bash
ssh myadmin@你的服务器IP地址
你会神奇地发现,这次系统没有问你要密码,直接就登录成功了!这说明你的“生物识别”系统已经生效了。
第三步:彻底断绝后患——关闭密码登录功能
我们已经装上了无法破解的“生物识别锁”,那么那个老旧的、不安全的“数字密码锁”还有必要留着吗?当然不!留着它,就等于给小偷留了一扇后门。
现在,我们要做的就是把服务器的密码登录功能,彻底、永久地关闭。
具体操作:
1编辑SSH配置文件。 用nano
编辑器打开sshd_config
这个文件。记住,这是系统级文件,需要用sudo
。
Bash
sudo nano /etc/ssh/sshd_config
2修改配置项。 在打开的文件里,你需要找到并修改以下几项。你可以使用Ctrl + W
来搜索。
- 找到
PasswordAuthentication yes
,把它改成PasswordAuthentication no
。(如果前面有#
,记得删掉) - 找到
PermitRootLogin yes
,把它改成PermitRootLogin no
。(这一步是禁止root
用户通过SSH登录,双重保险!) - 找到
ChallengeResponseAuthentication yes
,把它改成ChallengeResponseAuthentication no
。
3保存并重启SSH服务。 按Ctrl + X
,然后按Y
,再按回车,保存文件。然后,重启SSH服务让配置生效。Bashsudo systemctl restart sshd
警告: 在执行这一步之前,请务必、务必、务必打开一个新的终端窗口,重新测试一下你的密钥登录是否正常。确认无误后,再关闭旧的窗口。否则,一旦配置出错,你又关掉了密码登录,你可能会永远无法登录你的服务器!这就像你出门时,把门反锁了,才发现钥匙也锁在屋里了。
第四步:玩个“捉迷藏”——修改默认的SSH端口
SSH服务的默认端口是22。全世界都知道。因此,那些在网上游荡的“机器人”,它们攻击的目标,就是成千上万台服务器的22端口。你的服务器日志里,每天都会充斥着成千上万次对22端口的失败登录尝试,虽然它们因为你禁用了密码而无法成功,但看着也很烦人,对不对?
我们可以跟它们玩个“捉迷藏”的游戏。把SSH的“大门”从众所周知的22号,搬到一个只有你自己知道的、非常规的号码上,比如23456。
这就像你的堡垒,所有人都以为大门在南边,你却悄悄地把唯一入口开在了西边一个隐蔽的角落。这样一来,99%的自动化攻击都会因为找不到门而直接走开。
具体操作:
1再次编辑SSH配置文件。
Bash
sudo nano /etc/ssh/sshd_config
2修改端口号。 找到#Port 22
这一行,删掉前面的#
,然后把22
改成一个你自己喜欢的大于1024的数字(比如23456
)。
Port 23456
3保存并重启服务。 同样是Ctrl + X
,Y
,回车,然后重启SSH服务。
Bash
sudo systemctl restart sshd
注意! 在你断开当前连接之前,你的新端口还没有被“防火墙”放行,你还无法通过它连接。所以,我们必须先完成第五步。
第五步:雇佣一个“铁面门卫”——配置UFW防火墙
防火墙是什么?它就是你服务器最忠诚、最铁面无私的“门卫”。它的职责很简单:你没有明确允许进入的,一律拦在门外。
默认情况下,你的VPS可能没有开启防火墙,这意味着所有的“端口”(可以理解为服务的窗口)都是对外开放的,这是非常危险的。我们要做的,就是用ufw
(Uncomplicated Firewall,简单的防火墙)这个工具,把所有门都关上,然后只把你需要的几扇门打开。
具体操作:
1放行你的新SSH端口。 这是最关键的一步!如果你不先放行新的SSH端口就启动防火墙,你会被立刻锁在门外。
Bash
sudo ufw allow 23456/tcp
(把23456
换成你自己的新端口号)
2放行你需要的其他服务端口。 如果你准备搭建网站,那你还需要放行HTTP和HTTPS端口。
Bash
sudo ufw allow http # 这相当于 allow 80/tcp
sudo ufw allow https # 这相当于 allow 443/tcp
3启用UFW防火墙。
Bash
sudo ufw enable
系统会警告你这可能会中断现有连接,输入y
确认。
4检查防火墙状态。
Bash
sudo ufw status
你会看到类似这样的输出,清晰地列出了所有被允许的规则:
Status: active
To Action From
— —— —-
23456/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
…
现在,万事俱备。你可以放心地断开当前连接,然后用新的端口号再次登录了:
Bash
ssh -p 23456 myadmin@你的服务器IP地址
(-p
参数用来指定端口号)
如果一切顺利,你会被再次要求输入SSH密钥的密码(如果你设置了的话),然后成功登录。
全新的开始
好了,深呼吸一下。现在,再回头看看你的服务器。它不再是那个停在危险街区的“裸奔”跑车了。
通过这五步,你给它建立了一个专属的驾驶员(Sudo用户),换上了一套无法破解的指纹解锁系统(SSH密钥),彻底封死了老旧的密码锁(禁用密码登录),把车库大门挪到了一个秘密地点(修改SSH端口),最后还雇佣了一个只认你的铁面门卫(UFW防火墙)。
它已经变成了一个拥有坚固城墙、隐藏城门、并且只认你这位唯一主人的私人堡垒。
这只是你服务器安全之旅的开始,但却是最重要、最核心的开始。完成了这五步,你已经超越了至少80%的VPS新手。现在,你可以安心地去探索、去创造、去搭建你梦想中的应用了。你的堡垒,会忠诚地守护着你的数字资产。去尽情驰骋吧!