Hướng Dẫn Xử Lý Sự Cố Cơ Bản Và Tối Ưu Hóa Vận Hành Môi Trường Linux

Khắc Phục Lỗi Key Exchange Trong Kết Nối SSH

Sự kiện báo lỗi trao đổi khóa thất bại thường xuất hiện khi máy chủ đã loại bỏ các thuật toán cổ điển kém an toàn, trong khi công cụ người dùng chưa hỗ trợ chuẩn mã hóa hiện đại. Có hai hướng giải quyết:

  • Bổ sung thuật toán tương thích ngược: Mở file cấu hình daemon bằng văn soạn thảo, tìm đến phần cuối và chèn dòng tham số sau:
# /etc/ssh/sshd_config
KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1

Sau đó nạp lại dịch vụ:
sudo systemctl restart sshd

  • Nâng cấp client: Di chuyển sang các ứng dụng hỗ trợ TLS 1.2+/ChaCha20-Poly1305 như MobaXterm, WindTerm hoặc phiên bản Xshell mới nhất.

Tăng Tốc度 Lấy Gói Phần Mềm Trên Ubuntu

Thay đổi nguồn phản hồi gói tin từ máy chủ quốc tế sang mirror nội địa giúp giảm đáng kể thời gian chờ đợi. Quy trình thực hiện an toàn như sau:

# Sao lưu nguyên bản danh sách nguồn
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# Thay thế host archive mặc định bằng mirror tối ưu
# Tham khảo đầy đủ tại: https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
sudo sed -i 's|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list

# Làm tươi cache và cập nhật metadata
sudo apt update

Liên Kết Nguồn Phân Phối OpenJDK 8

Các kho triển khai chính thức cung cấp build ổn định và kiểm thử kỹ lưỡng:

  • Cửa hàng chính thức từ Microsoft: https://learn.microsoft.com/zh-cn/java/openjdk/download#openjdk-8
  • Kho Temurin bởi Adoptium Foundation: https://adoptium.net/zh-CN/temurin/archive/?version=8

Cấu Hình Đồng Bộ Thời Gian Với Chrony Hoặc NTP

Đảm bảo clock hệ thống luôn lệch thấp hơn vài mil giây so với UTC. Dưới đây là kịch bản triển khai tự động hóa:

#!/bin/bash
NTP_SERVER="pool.ntp.org"
TIMEZONE_ID="Asia/Ho_Chi_Minh"

# --- Khối 1: Chrony (Mặc định trên nhiều distro hiện đại) ---
sync_chrony() {
  sudo apt install -y chrony ntpdate 2>/dev/null || sudo yum install -y chrony wntp
  echo "server $NTP_SERVER iburst minpoll 5 maxpoll 6" | sudo tee -a /etc/chrony/chrony.conf > /dev/null
  
  # Force sync trước khi bật service để tránh drift lớn
  sudo ntpdate "$NTP_SERVER"
  sudo systemctl enable --now chronyd
  chronyc sources -v
}

# --- Khối 2: NTP Truyền Thống ---
sync_ntp_legacy() {
  sudo apt install -y ntp ntpdate 2>/dev/null || sudo yum install -y ntp
  echo "server $NTP_SERVER iburst" | sudo tee -a /etc/ntp.conf > /dev/null
  
  sudo ntpdate "$NTP_SERVER"
  sudo systemctl enable --now ntpd
  ntpq -p
}

# --- Thiết Lập Giờ Phần Cứng & Múi Giờ ---
echo "SYNC_HWCLOCK=yes" | sudo tee -a /etc/sysconfig/ntpd > /dev/null
sudo hwclock -w
sudo timedatectl set-timezone "$TIMEZONE_ID"

Kết Nốifilesystem Và Giải Thích Cờ Bảo Mật

Việc định nghĩa mount persistent trong `/etc/fstab` nên tuân thủ cú pháp bảng sau. Sử dụng UUID thay vì đường dẫn thiết bị vật lý để tránh sai lệch khi thay đổi controller:

<thiết_bịhoặc_uuid>    <đường_dẫn>    <kiểu_hệ_thống>    <cài_đặt_mount>          <dump> <pass>
/dev/mapper/vg-lv_tmp    /tmp           ext4                defaults,nodev,nosuid     0      0
UUID=a1b2c3d...          /var/opt       ext4                defaults,noatime,nosuid   0      2
nfs-share.example.com:/  /mnt/data      nfs                 defaults,bg,hard,intr     0      0

Chi tiết ý nghĩa các tham số bảo mật:

  • nodev: Cấm tạo node character/block device ngay trên partition được mount, ngăn chặn tấn công giả mạo tầng harddisk.
  • nosuid: Vô hiệu hóa bit SUID/SGID, đảm bảo process chạy theo đúng quyền của user đang đăng nhập, không leo thang đặc quyền.
  • bg: (Dành cho NFS) Nếu network chưa sẵn sàng lúc boot, systemd sẽ đẩy mount task ra background thread, tránh treo toàn bộ quá trình khởi động.

Dò tra topology đĩa: lsblk -f hoặc blkid -u filesystem.

Cài Đặt Docker Engine Và Plugin Compose

Quy trình cấu hình container runtime trên nền tảng dựa trên RPM:

# 1. Thêm repository và giải quyết dependency
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast

# 2. Triển khai engine và tắt firewall mặc định
sudo yum install -y docker-ce
sudo systemctl disable --now firewalld

# 3. Cấp quyền non-root runner
USER_NAME="appops"
sudo usermod -aG docker "$USER_NAME"

# 4. Tùy chỉnh daemon.json (Tối ưu cho production)
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "storage-driver": "overlay2",
  "dns": ["8.8.8.8", "1.1.1.1"],
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io"
  ],
  "features": {
    "buildkit": true
  },
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 65536,
      "Soft": 65536
    }
  }
}
EOF

# 5. Kích hoạt và kiểm thử
sudo systemctl daemon-reload
sudo systemctl enable --now docker
docker run --rm hello-world</code>

Hoạt hóa Docker Compose dưới 2 dạng tích hợp:

  • Plugin chính thức: sudo yum install -y docker-compose-plugin → gọi bằng docker compose up -d
  • Binary riêng biệt: Tải artifact từ GitHub Releases, gán chmod +x, liên kết tượng trưng vào /usr/local/bin/docker-compose và xác minh bằng docker-compose --version

Thẻ: sshd tuna-mirror chrony NTP sysfs

Đăng vào ngày 6 tháng 10 lúc 17:05