购买一台服务器后该做什么

一、查看系统基本信息

创建一个快速查看脚本 system_info.sh

bash 复制代码
#!/bin/bash

echo "===== 系统版本 ====="
cat /etc/centos-release
echo ""

echo "===== 内核版本 ====="
uname -r
echo ""

echo "===== CPU信息 ====="
lscpu | grep -E "Model name|Socket|Core|CPU\(s\)"
echo ""

echo "===== 内存信息 ====="
free -h
echo ""

echo "===== 磁盘信息 ====="
df -h --total
echo ""

echo "===== 网络信息 ====="
ip addr show | grep -E "inet |ether" | grep -v "127.0.0.1"
echo ""

echo "===== 系统运行时间 ====="
uptime

二、创建admin用户

服务器绝对不建议直接使用 root 账号登录。主要原因包括:

  1. 安全风险:一旦被攻击,攻击者获得完全控制权

  2. 误操作风险:root 权限下任何操作都可能造成灾难性后果

  3. 审计困难:多人使用 root 无法追踪具体操作者

  4. 最小权限原则:按需分配权限,不滥用最高权限

推荐做法:创建拥有 sudo 权限的用户(替代 root)

1、创建 admin 用户

bash 复制代码
# 1. 创建新用户(以 admin 为例)
useradd admin

# 2. 设置用户密码
passwd admin
# 输入并确认密码

2、将admin 赋予 root权限

bash 复制代码
#手动
visudo
admin    ALL=(ALL)    NOPASSWD: ALL

#或者创建一个新文件
sudo visudo -f /etc/sudoers.d/admin-user

# 添加以下内容(按需调整)
#需要密码:
admin ALL=(ALL) ALL
#不需要密码
admin    ALL=(ALL)    NOPASSWD: ALL


单行命令:
echo "admin ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/admin-user

检查 sudo 权限:

复制代码
# 切换到新用户
su - admin
# 测试 sudo 权限
sudo whoami  # 应该显示 root
sudo ls /root  # 测试能否访问 root 目录
# 查看可用的 sudo 命令
sudo -l

三、禁用 root 远程 SSH 登录

bash 复制代码
# 1. 编辑 SSH 配置
vim /etc/ssh/sshd_config

# 2. 找到并修改以下行:
PermitRootLogin no           # 禁止 root 直接登录
PasswordAuthentication no    # 推荐:禁用密码登录,使用密钥
AllowUsers admin             # 可选:只允许特定用户登录

# 3. 重启 SSH 服务
systemctl restart sshd

# 4. 重要:测试新用户连接正常后再退出当前 root 会话
# 新开终端用 admin 用户登录测试


#直接命令修改:
sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

四、切换/使用root

复制代码
# 当前是 admin 用户
sudo su -          # 输入 admin 密码,切换到 root

sudo susudo su - 不完全一样,它们有一些重要的区别。主要体现在环境变量的加载和当前目录的变化上. sudo su目录不变且不会加载环境变量。sudo su - 会,等价于sudo -i
记忆技巧

su = Switch User(切换用户)

用于改变身份

类似:"我要变成另一个人"

sudo = SuperUser DO(超级用户执行)

用于临时借用权限

类似:"借你的权限用一下"

简单判断:

如果你需要在多个命令中都使用 root 权限 → 考虑 su -

如果只是偶尔需要执行特权命令 → 使用 sudo

更推荐的安全做法

bash

复制代码
# 1. 只为需要 root 权限的单个命令使用 sudo
sudo systemctl restart nginx
sudo cat /var/log/secure

典型的服务器管理流程

复制代码
# 1. 以普通用户登录(如admin)
ssh admin@server

# 2. 检查系统(不需要root)
df -h

# 3. 安装软件(需要root)
sudo yum install nginx

# 4. 配置Nginx(需要root)
sudo vi /etc/nginx/nginx.conf

# 5. 复杂的多步操作(需要root shell)
sudo -i
# 进入root环境
cd /etc/nginx/sites-available
cp default.conf myapp.conf
vi myapp.conf
systemctl reload nginx
# 立即退出
exit

# 回到普通用户继续工作

五、软件安装

在CentOS中,无论是使用admin账户还是root账户安装软件,实际上最终都需要root权限才能安装。但是,从安全性和审计的角度来看,推荐使用具有sudo权限的普通用户(如admin)来安装软件,而不是直接使用root账户。

推荐做法:使用admin账户通过sudo安装

为什么不推荐直接使用root账户安装?

  1. 安全风险:如果直接使用root账户,一旦被攻击,攻击者将获得完全的控制权。

  2. 操作风险:root账户没有操作确认,任何命令都会立即执行,可能导致误操作。

  3. 审计困难:如果多人共享root账户,无法追踪具体是谁执行了操作。

为什么 admin + sudo 更好?

方面 admin + sudo root 账户 说明
安全性 ✅ 高 ❌ 低 sudo 需要再次验证身份
审计跟踪 ✅ 可追踪 ❌ 难追踪 sudo 记录谁、何时、执行了什么
操作确认 ✅ 有提醒 ❌ 无提醒 输入密码步骤减少误操作
权限范围 ✅ 可控 ❌ 无限制 sudo 可配置限制命令
环境隔离 ✅ 好 ❌ 差 保持用户环境,避免路径问题
误操作风险 ✅ 低 ❌ 高 每个特权命令都需要明确授权

步骤:

  1. 使用admin账户登录。

  2. 通过sudo执行安装命令。

例如:

bash 复制代码
# 1. 以 admin 用户登录服务器
ssh admin@服务器IP

# 2. 更新系统包列表
sudo yum update

# 3. 安装 EPEL 仓库(如果需要)
sudo yum install epel-release

# 4. 安装 nginx
sudo yum install nginx

# 5. 启动 nginx
sudo systemctl start nginx

# 6. 设置开机自启
sudo systemctl enable nginx

# 7. 检查状态
sudo systemctl status nginx

优点:

  1. 审计跟踪:通过sudo执行的命令会被记录在系统日志中(通常是/var/log/secure),可以追踪谁在什么时间执行了安装操作。

  2. 最小权限原则:admin用户只有在需要时才临时获取root权限,而不是一直拥有root权限。

  3. 减少误操作:在执行安装命令前,sudo会要求输入密码,这给了用户一个确认的机会。

注意事项:

  • 确保admin用户在sudoers文件中配置了安装软件所需的权限。通常,我们给admin用户完整的sudo权限(通过wheel组或直接配置),这样admin用户就可以执行任何root命令,包括安装软件。

查看审计日志(sudo 的优势)

bash 复制代码
# 查看谁安装了 nginx,什么时间
sudo grep "nginx.*install" /var/log/secure
# 或
sudo journalctl _COMM=sudo | grep nginx

创建安装脚本

bash 复制代码
# 创建 /usr/local/bin/install-nginx.sh
#!/bin/bash
set -e  # 遇到错误立即停止

echo "更新系统..."
sudo yum update -y

echo "安装EPEL仓库..."
sudo yum install epel-release -y

echo "安装nginx..."
sudo yum install nginx -y

echo "配置防火墙..."
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

echo "启动服务..."
sudo systemctl enable --now nginx

echo "验证安装..."
sudo nginx -t
sudo systemctl status nginx

# 给予执行权限
sudo chmod +x /usr/local/bin/install-nginx.sh
sudo chown admin:admin /usr/local/bin/install-nginx.sh

六、密钥登录

root密码登录 vs 密钥登录的全面对比

这两种登录方式在安全性、便利性、管理方式上有本质区别:

一、核心区别总结

特性 密码登录 密钥登录
认证方式 记忆的密码字符串 非对称加密密钥对
安全级别 低-中等(依赖密码强度) 极高(几乎不可破解)
防暴力破解 弱(可能被猜中) 强(无法通过猜测登录)
传输安全 密码可能被嗅探 密钥本身不传输
方便性 需要记忆和输入 一次配置,永久使用
自动化脚本 需处理密码(不安全) 可无缝集成
多服务器管理 每台不同密码 同一私钥管理所有服务器

密钥登录配置

bash 复制代码
# 1. 客户端生成密钥对
ssh-keygen -t ed25519 -C "root@server"  # 或使用 RSA
# 默认保存到 ~/.ssh/id_ed25519(私钥)和 id_ed25519.pub(公钥)

# 2. 将公钥上传到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@server_ip

# 3. 客户端连接(无需密码)
ssh -i ~/.ssh/id_ed25519 root@server_ip

# 4. 或配置 SSH 客户端简化
# 编辑 ~/.ssh/config
Host myserver
    HostName server_ip
    User root
    IdentityFile ~/.ssh/id_ed25519
# 然后只需:ssh myserver

为什么云服务器必须使用密钥登录?

  1. 公网暴露:云服务器直接暴露在公网,是黑客的重点目标

  2. 自动化攻击:黑客使用僵尸网络24小时扫描全网,尝试root密码登录

  3. 腾讯云统计 :未配置密钥的服务器,平均每天遭受 3000+ 次 暴力破解尝试

使用密钥登录过程(以腾讯云为例)必须做的5件事:

  1. ✅ 在控制台创建并下载密钥对

  2. ✅ 绑定密钥到服务器并重启

  3. ✅ 本地设置私钥权限为600

  4. ✅ 测试连接是否成功

  5. ✅ 配置SSH Config简化连接

具体步骤如下:

一、腾讯云控制台配置密钥

步骤1:创建密钥对

  1. 登录腾讯云控制台https://console.cloud.tencent.com/

  2. 进入 云服务器 CVM → 左侧导航栏选择 SSH 密钥

  3. 点击 创建密钥

  4. 选择创建方式:

    • 创建新密钥对(推荐,腾讯云自动生成公私钥)

    • 使用已有公钥(已有密钥时使用)

步骤2:下载并保存私钥

  • 如果选择"创建新密钥对":

    1. 输入密钥名称,如:my-tencent-server

    2. 点击"创建"

    3. 立即下载私钥(重要!只有一次下载机会)

    4. 私钥文件格式:.pem(如:my-tencent-server.pem

步骤3:绑定密钥到云服务器

  1. 在密钥列表中找到刚创建的密钥

  2. 点击 绑定实例

  3. 选择要绑定的云服务器

  4. 确认绑定

  5. 重启服务器使配置生效(可以选择"强制关机"重启)

二、本地连接配置

方式1:直接使用私钥连接

bash

复制代码
# 1. 将私钥文件放到安全位置
mv ~/Downloads/my-tencent-server.pem ~/.ssh/
cd ~/.ssh

# 2. 设置严格的权限(必须!)
chmod 600 my-tencent-server.pem

# 3. 连接到服务器(CentOS默认用户是root)
ssh -i ~/.ssh/my-tencent-server.pem root@你的服务器公网IP

# 如果修改了SSH端口
ssh -i ~/.ssh/my-tencent-server.pem -p 22222 root@你的服务器公网IP

方式2:配置SSH Config文件(推荐)

bash

复制代码
# 编辑SSH配置文件
vim ~/.ssh/config

# 添加以下内容:
Host tencent              # 自定义别名
    HostName 你的服务器公网IP
    User root             # 腾讯云CentOS默认用户
    Port 22               # 默认SSH端口,如果修改了要相应更改
    IdentityFile ~/.ssh/my-tencent-server.pem
    ServerAliveInterval 30   # 每30秒发送一次心跳
    ServerAliveCountMax 3    # 最多3次无响应断开

Host tencent-web          # 可以配置多个主机
    HostName 另一台服务器IP
    User root
    IdentityFile ~/.ssh/my-tencent-server.pem

# 设置配置文件权限
chmod 600 ~/.ssh/config

# 现在可以这样连接
ssh tencent

连接问题排查

如果连接失败,按顺序检查:

1. 检查私钥权限(必须是600)

ls -la ~/.ssh/你的密钥.pem

应该显示:-rw------- 1 user user

2. 检查服务器是否重启

腾讯云绑定密钥后需要重启服务器生效

3. 检查安全组配置

腾讯云控制台 → 安全组 → 查看22端口是否开放

4. 详细调试信息

ssh -v -i ~/.ssh/你的密钥.pem root@服务器IP

5. 使用-vvv获取更详细日志

ssh -vvv -i ~/.ssh/你的密钥.pem root@服务器IP

紧急情况:

如果密钥登录失败,可以使用腾讯云控制台的 VNC登录 功能:

  1. 控制台 → 云服务器 → 点击"登录"

  2. 使用VNC终端

  3. 输入创建服务器时设置的root密码

  4. 检查并修复SSH配置

记住 :密钥登录不是可选项,而是腾讯云服务器安全的必选项。配置完成后,应立即禁用密码登录,大大提升服务器安全性。

相关推荐
2501_945837432 小时前
零信任架构落地,云服务器全生命周期安全防护新体系
服务器
tianyuanwo2 小时前
Jenkins Job管理实战指南:增删改查与批量操作技巧
运维·jenkins
这儿有一堆花2 小时前
服务器安全:防火墙深度配置指南
服务器·安全·php
螺旋小蜗2 小时前
docker-compose文件属性(3)顶部元素networks
运维·docker·容器
Q16849645152 小时前
红帽Linux-文件权限管理
linux·运维·服务器
不当菜虚困3 小时前
centos7虚拟机配置网络
运维·服务器·网络
fiveym3 小时前
CI/CD 核心原则 + 制品管理全解析:落地要求 + 存储方案
linux·运维·ci/cd
小北方城市网3 小时前
Spring Security 认证授权实战(JWT 版):从基础配置到权限精细化控制
java·运维·python·微服务·排序算法·数据库架构
AIGCExplore3 小时前
运维常用技术官网及工具整理手册
运维
郝学胜-神的一滴3 小时前
Linux条件变量:线程同步的利器
linux·服务器·开发语言·c++·程序人生·软件工程