系统安装后配置

远程连接

SSH 配置

  • 配置文件

    编辑配置文件 /etc/ssh/sshd_config

    Port 22	# 端口
    PermitRootLogin yes	# 允许 root 登录, 默认 no 或 prohibit-password
    GSSAPIAuthentication no	# 取消 GSSAPI 认证
    ClientAliveInterval 60	# 服务器端向客户端请求消息的时间间隔, 默认是 0, 不发送, 其实就是长连接, 为了避免频繁断开
    UseDNS no	# 禁用 DNS 反向解析, 可以提高连接速度
    
  • 重启服务使生效

    systemctl reload sshd	# restart 也可以
    

用户和权限

解除 root 锁定

Linux 桌面化安装时,如果选择锁定 root 用户,在安装后,是无法通过 ssh 远程连接 root 登录的,需要先解除锁定。

  • 解除 root 锁定

    sudo passwd -S root # 查看 root 状态
    sudo passwd -u root # 解除锁定
    
  • SSH 配置允许 root 用户登录

    编辑 /etc/ssh/sshd_config

    PermitRootLogin yes  # 默认为 no 或 prohibit-password
    

    重启 sshd 服务生效:

    systemctl restart sshd
    

目录规划

创建开发目录

mkdir -p /server/{tools,scripts,files,softwares}
tree /server/	# 验证
  • /server/tools

    • 工具
  • /server/scripts

    • 脚本
  • /server/files

    • 文件
  • /server/softwares

    • 软件

系统升级

安装 epel 镜像源

dnf install -y epel-release

升级系统和软件

dnf clean all && dnf makecache		# 刷新缓存
dnf -y update	# 升级

Note:系统升级过程中会把默认的 YUM 源重新安装一遍。

安装软件

时间同步

使用 Chrony 进行时间同步。

  • 修改配置文件

    编辑配置文件 /etc/chrony.conf,修改以下配置项:

    #pool 2.rocky.pool.ntp.org iburst
    server ntp.ntsc.ac.cn iburst   
    server ntp.aliyun.com iburst
    
    # Enable kernel synchronization of the real-time clock (RTC).
    rtcsync
    
    • 添加国内 NTP 服务器(替换默认源)

      server ntp.ntsc.ac.cn iburst   # 国家授时中心(推荐)
      server ntp.aliyun.com iburst    # 阿里云源(备用)
      

      iburst:加速初始同步

    • 启用内核时间同步(RHEL 9 已默认启用)

      以下配置取消注释:

      rtcsync  # 每 11 分钟同步系统时间到硬件时钟(RTC)
      
  • 重启服务生效

    sudo systemctl restart chronyd
    sudo systemctl enable chronyd
    
  • 检查服务状态

    timedatectl
    

    字段说明:

                   Local time: Mon 2025-07-28 08:50:48 CST
               Universal time: Mon 2025-07-28 00:50:48 UTC
                     RTC time: Mon 2025-07-28 00:50:48
                    Time zone: Asia/Shanghai (CST, +0800)
    System clock synchronized: yes	# yes 已同步
                  NTP service: active	# 服务中
              RTC in local TZ: no
    

安装 JDK

dnf install java-1.8.0-openjdk.x86_64
java -version		# 验证

安装 Golang

  • 下载&解压

    wget https://golang.google.cn/dl/go1.24.5.linux-amd64.tar.gz
    tar zxvf go1.24.5.linux-amd64.tar.gz -C /usr/local/
    
  • 创建软链接

    cd /usr/local/
    mv go go-1.24.5
    ln -s go-1.24.5 go
    
  • 添加环境变量

    编辑配置文件 /etc/profile,追加:

    GOLANG_HOME=/usr/local/go
    export PATH=$PATH:$GOLANG_HOME/bin
    
  • 验证

    go version
    

安装 Docker

  • 安装

    • 卸载旧版本

      sudo dnf remove docker \
                        docker-client \
                        docker-client-latest \
                        docker-common \
                        docker-latest \
                        docker-latest-logrotate \
                        docker-logrotate \
                        docker-engine \
                        podman \
                        runc
      
    • 添加 yum 仓库

      sudo dnf -y install dnf-plugins-core
      sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
      
    • 安装最新版本

      sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
    • 启动

      sudo systemctl enable --now docker
      
    • 验证

      docker -v
      
  • 配置镜像加速

    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com",
        "https://ipftect5.mirror.aliyuncs.com",
        "https://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.m.daocloud.io",
        "https://docker.1ms.run"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  • 配置代理

    • Docker 代理

      # 查看 Docker 的启动文件
      $ systemctl status docker
      ● docker.service - Docker Application Container Engine
           Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
           Active: active (running) since Sat 2025-08-02 16:23:55 CST; 6s ago
      TriggeredBy: ● docker.socket
             Docs: https://docs.docker.com
         Main PID: 13667 (dockerd)
            Tasks: 18
           Memory: 32.9M
              CPU: 466ms
           CGroup: /system.slice/docker.service
                   └─13667 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
      

      /usr/lib/systemd/system/docker.service 启动文件中添加以下内容:

      [Service]
      Environment="HTTP_PROXY=http://192.168.0.104:7890"
      Environment="HTTPS_PROXY=http://192.168.0.104:7890"
      Environment="NO_PROXY=localhost,127.0.0.1,.docker.internal,.local,.cn,192.168.0.0/16"
      

      重新加载配置,重启 Docker

      systemctl daemon-reload 
      systemctl restart docker
      
    • 验证

      Windows 打开 Clash 局域网代理,在局域网 Linux 端执行以下命令:

      docker pull registry.k8s.io/kube-proxy:v1.32.7
      

      如果拉取成功,则说明配置正常。

系统优化

关闭 SELinux

setenforce 0
sed -i 's|=permissive$|=disabled|g' /etc/selinux/config

Note:重启后,永久生效。

禁用 Swap 分区

sudo cp /etc/fstab /etc/fstab.bak  # 创建备份
...
sudo vim /etc/fstab  # 使用 nano 或 vim 编辑
# 注释掉 swap 那行
# 重启系统
...
swapon --show        # 应无输出
free -h              # Swap 行显示 0B

关闭防火墙

sudo systemctl stop firewalld          # 先停止服务
sudo systemctl disable firewalld       # 禁用开机自启
sudo systemctl status firewalld        # 检查状态
firewall-cmd --list-all                # 若返回 "FirewallD is not running" 说明已关闭

优化字符编码

localectl set-locale en_US.UTF-8

环境变量优化

编辑配置文件 /etc/profile,修改和添加:

  • 限制 Shell 记录历史命令条数

    修改以下项:

    HISTSIZE=50
    

    或,命令执行:

    sed -r 's|^(HISTSIZE).*|\1=50|g' /etc/profile
    

    使生效:

    source /etc/profile
    
  • 优化命令提示符

    export PS1="\[\e[1;32m\][\[\e[1;31m\]\u\[\e[1;33m\]@\[\e[1;34m\]\h \[\e[1;32m\]\W]\[\e[1;35m\]\\$\[\e[0m\]"
    

优化 Vim

编辑配置文件 /etc/vimrc,追加:

set ts=4

Note:设置 tab 为 4 个空格。