Menu

10/18/26

LAB TRIỂN KHAI WINDOWS 11 QUA DOCKER

 


LAB TRIỂN KHAI WINDOWS 11 QUA DOCKER

VMware Workstation  →  Debian 13  →  Docker  →  QEMU/KVM  →  Windows 11  →  noVNC


1. Tổng quan & trạng thái hiện tại

Mục tiêu: chạy máy ảo Windows 11 bên trong QEMU/KVM do container dockurr/windows quản lý trên Debian. Truy cập màn hình bằng Chrome/noVNC qua cổng 8006. Windows không phải container Windows thuần và cũng không được cài trực tiếp đè lên Debian.

Lớp

Cấu hình lab đã ghi nhận

Máy chủ ảo hóa

VMware Workstation (trên máy Windows)

Máy Debian

Debian 13, kernel 6.12.111+deb13-amd64; tên VM trên VMware hiển thị Debian 12.x

Tài nguyên Debian VM

4 vCPU • 16 GB RAM • virtual disk 150 GiB

Địa chỉ Debian

192.168.1.14 (LAN, SSH root)

KVM

VT-x: Full; /dev/kvm có mặt

Docker

Engine 29.9.1 • Compose v5.6.0 • hello-world thành công

Disk OS

/dev/sda1 ext4 ~18.9 GiB; /dev/sda5 swap ~1.1 GiB

Disk lab

/dev/sda3 ext4 ~130 GiB; mount /opt/windows11-lab

Windows 11 VM

2 vCPU • 8 GB RAM • disk 80 GB (cấu hình đã nhập)

Web viewer

http://192.168.1.14:8006

 


2. Sơ đồ kiến trúc

Windows PC (VMware Workstation)

   └─ VM Debian 13 [4 vCPU / 16 GB RAM / 150 GiB disk]

       ├─ /dev/sda1  18.9 GiB → Debian root / + Docker Engine

       ├─ /dev/sda5   1.1 GiB → Swap

       └─ /dev/sda3   ~130 GiB → /opt/windows11-lab

           └─ Docker Compose: windows11 [dockurr/windows]

               └─ QEMU/KVM [2 vCPU / 8 GB / 80 GB virtual disk]

                   └─ Windows 11 → noVNC :8006 / RDP :3389

 

3. Chuẩn bị VMware & xác minh KVM

Trong VMware: tắt VM → VM Settings → Processors → bật “Virtualize Intel VT-x/EPT or AMD-V/RVI”. Network Adapter đặt Bridged để Debian nhận IP trong LAN (trường hợp lab này dùng 192.168.1.14).

lscpu | grep -E 'Model name|Virtualization|Virtualization type'

ls -l /dev/kvm

free -h

hostname -I

 

Kết quả đã đạt: CPU báo VT-x, virtualization type full và /dev/kvm tồn tại. Nếu mất /dev/kvm, kiểm tra lại Nested Virtualization trong VMware và cấu hình ảo hóa trên host.

4. Cài Docker trên Debian 13

Các lệnh đã áp dụng qua SSH root, sử dụng kho Docker chính thức dành cho Debian trixie:

apt update

apt install -y ca-certificates curl

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc

chmod a+r /etc/apt/keyrings/docker.asc

cat > /etc/apt/sources.list.d/docker.sources <<EOF

Types: deb

URIs: https://download.docker.com/linux/debian

Suites: trixie

Components: stable

Architectures: amd64

Signed-By: /etc/apt/keyrings/docker.asc

EOF

apt update

apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

systemctl enable --now docker

 

docker --version

docker compose version

docker run --rm hello-world

 

Đã xác nhận màn hình “Hello from Docker!”; 

5. Chuẩn bị ổ đĩa riêng ~130 GiB 

VMware đã tăng ổ /dev/sda lên 150 GiB, nhưng root /dev/sda1 vẫn ~19 GiB. Để tránh đụng vào root và swap, lab tạo phân vùng primary mới từ 20 GiB tới cuối ổ. Lưu ý: lệnh mkfs.ext4 xóa dữ liệu phân vùng đích; chỉ chạy lại khi chủ động muốn xóa dữ liệu.

# Lệnh đã thực hiện trong lab - KHÔNG cần chạy lại

parted /dev/sda unit GiB print free

parted -s -a optimal /dev/sda mkpart primary ext4 20GiB 100%

partprobe /dev/sda

lsblk

mkfs.ext4 /dev/sda3

mkdir -p /opt/windows11-lab

mount /dev/sda3 /opt/windows11-lab

 

Dòng mount duy nhất được cấu hình trong /etc/fstab:

UUID=6732f1f9-3023-41db-b7cc-fc787d6482fa /opt/windows11-lab ext4 defaults,nofail 0 2

 

Dòng UUID gắn theo kết quả blkid thực tế của máy. Không sao chép sang VM khác khi UUID khác. Trong quá trình thao tác đã từng phát sinh các dòng sai do nhập lệnh; chúng đã được sửa bằng nano.

systemctl daemon-reload

findmnt --verify --verbose

df -h /opt/windows11-lab

findmnt /opt/windows11-lab

 

Kết quả findmnt --verify đã ghi nhận: 0 parse errors, 0 errors, 1 warning về CD-ROM (udf/iso9660). Cần dùng df/findmnt xác nhận /dev/sda3 đang mount trước khi vận hành lab.

6. Tạo Windows 11 bằng Docker Compose

mkdir -p /opt/windows11-lab/{windows,shared}

cd /opt/windows11-lab

nano compose.yaml

 

Nội dung cấu hình tham chiếu cho lab. PASSWORD dưới đây là chỗ giữ chỗ, KHÔNG dùng nguyên mẫu; trong file thực tế hãy giữ mật khẩu riêng và phân quyền hạn chế:

services:

  windows11:

    image: dockurr/windows:latest

    container_name: windows11

    environment:

      VERSION: "11"

      RAM_SIZE: "8G"

      CPU_CORES: "2"

      DISK_SIZE: "80G"

      USERNAME: "labadmin"

      PASSWORD: "<MAT_KHAU_MANH_CUA_BAN>"

    devices:

      - /dev/kvm

      - /dev/net/tun

    cap_add:

      - NET_ADMIN

    ports:

      - "8006:8006"

      - "3389:3389/tcp"

      - "3389:3389/udp"

    volumes:

      - ./windows:/storage

      - ./shared:/shared

    restart: unless-stopped

    stop_grace_period: 2m

 

cd /opt/windows11-lab

chmod 600 compose.yaml

docker compose config -q

docker compose up -d

docker logs -f windows11

 

Kết quả đã quan sát: image dockurr/windows:latest được pull; mạng windows11-lab_default tạo mới; container windows11 started; sau đó “Requesting Windows 11 from the Microsoft servers...” và “Downloading Windows 11...”.




7. Theo dõi tải ISO & cài đặt tự động

Truy cập trên máy cùng LAN bằng Chrome: http://192.168.1.14:8006. Trên màn hình quan sát được biểu tượng Windows, dòng “Downloading Windows 11” và thanh tiến độ. Tiếp tục chờ tới khi hệ thống chuyển sang màn hình cài đặt và cuối cùng là desktop. Tốc độ phụ thuộc kết nối Microsoft, không nên khởi động lại container khi vẫn đang tải.



Ảnh thực tế: trang noVNC của lab tại thời điểm Windows 11 đang tải (18/10/2026).

# Mở một tab SSH khác để theo dõi

docker ps

docker logs --tail 50 windows11

docker stats --no-stream windows11

df -h /opt/windows11-lab

du -sh /opt/windows11-lab/windows

 

Chú ý: du -sh không nhất thiết phản ánh ISO đang tải nếu phần mềm sử dụng đường dẫn tạm bên trong container. Không suy ra bị treo chỉ vì thư mục windows chưa tăng dung lượng.

8. Công việc sau khi Windows 11 cài xong

·         Xác nhận thấy Windows 11 Desktop qua http://192.168.1.14:8006.

·         Mở Task Manager để xem CPU/RAM của Windows; kiểm tra tài nguyên QEMU theo cấu hình.

·         Trong Windows chạy winver và ipconfig /all để ghi nhận phiên bản, IP Windows nội bộ.

·         Đăng nhập tài khoản được tạo trong quá trình cài; không đưa mật khẩu vào tài liệu báo cáo.

·         Nếu cần dùng RDP, thử mstsc tới 192.168.1.14:3389 sau khi Windows hoàn tất khởi động và dịch vụ RDP đã sẵn sàng.

·         Kích hoạt Windows bằng giấy phép hợp lệ khi áp dụng.

·         Kiểm tra snapshot/backup phù hợp trước khi nâng cấp hoặc thay đổi lớn.

9. Lệnh quản trị & khắc phục sự cố

Mục đích

Lệnh / hướng xử lý

Trạng thái

docker ps -a

Log

docker logs --tail 100 windows11

CPU/RAM

docker stats --no-stream windows11

Dừng / chạy lại

cd /opt/windows11-lab && docker compose stop / start

Khởi động lại

docker restart windows11 (chỉ sau khi biết Windows không còn cài/tải)

Kiểm tra KVM

ls -l /dev/kvm

Kiểm tra ổ đĩa

findmnt /opt/windows11-lab && df -h /opt/windows11-lab

Mở cổng 8006

ss -lnt | grep 8006

Sao lưu dữ liệu

Sao lưu thư mục /opt/windows11-lab/windows khi VM/Windows đã tắt an toàn

 

Nếu noVNC không mở được: kiểm tra container, IP LAN, VMware Bridged, firewall và lắng nghe cổng. Nếu Windows chậm: kiểm tra CPU/RAM cấp cho cả Debian và Windows, KVM, tài nguyên CPU vật lý. Không dùng docker compose down -v khi chưa hiểu rõ cấu hình volume.

10. Lưu ý an toàn & bảo trì

·         Chỉ cho phép truy cập 8006/3389 trong LAN hoặc qua VPN đáng tin cậy; không NAT/port-forward các cổng này trực tiếp ra Internet.

·         Giao diện noVNC trong hình hiện dùng HTTP (“Not secure”); nếu truy cập ngoài máy nội bộ, dùng VPN hoặc reverse proxy TLS và cơ chế xác thực.

·         Giữ file compose.yaml có mật khẩu ở quyền 600; không chia sẻ file cấu hình thực tế nếu chứa mật khẩu.

·         Trước khi reboot VMware VM, nên tắt Windows từ menu Start hoặc cho container dừng mềm.

·         Container chạy Windows dưới QEMU/KVM; cần license Windows hợp lệ.

·         Windows 11 hiện vẫn đang tải tại thời điểm chốt tài liệu; các bước kiểm tra sau cài là checklist chưa thực hiện.

11. Tài liệu tham khảo

Docker Engine Debian: https://docs.docker.com/engine/install/debian/

Dự án dockurr/windows: https://github.com/dockur/windows

Tài liệu GParted (nếu cần bảo trì phân vùng): https://gparted.org/

Tài liệu này được lập từ thao tác và ảnh chụp đã chia sẻ trong phiên hướng dẫn; một số kết quả sau khi Windows cài xong cần cập nhật về sau.

10/17/26

Allow SSH Debian linux

 


apt update

apt install openssh-server -y

systemctl enable --now ssh

systemctl status ssh

 

 

nano /etc/ssh/sshd_config

PermitRootLogin yes

Bấm Ctrl + O sau đó bấm Enter để lưu.

Bấm Ctrl + X để thoát.

 

systemctl restart ssh

ip a

ssh root@dia_chi_ip_debian

4/14/26

Hướng dẫn cấu hình SIP Trunk VNPT trên FreePBX

 

1. Thu thập thông tin từ VNPT

Trước khi bắt đầu, bạn cần có biên bản bàn giao từ VNPT gồm:

  • IP Server/Softswitch: (Ví dụ: 113.161.x.x hoặc vob.vnpt.vn)

  • Username/AuthID: (Thường là số điện thoại, ví dụ: 842838xxxxxx)

  • Password: (Mật khẩu SIP)

  • IP WAN/VLAN: Nếu VNPT chạy đường dây riêng, bạn phải đặt IP này cho cổng mạng thứ 2 trên máy chủ FreePBX.


2. Tạo Trunk mới

  1. Vào Connectivity -> Trunks.

  2. Nhấn + Add Trunk -> Add SIP (chan_pjsip) Trunk.

    • Lưu ý: Nếu VNPT yêu cầu dùng công nghệ cũ, bạn chọn chan_sip, nhưng PJSIP hiện là tiêu chuẩn mới.

Tab General:

  • Trunk Name: VNPT_Trunk

  • Outbound CallerID: Nhập số điện thoại chính của bạn (ví dụ: 02838xxxxxx).

Tab pjsip Settings -> General:

  • Username: Nhập số điện thoại (Username VNPT cấp).

  • Password: Nhập mật khẩu SIP.

  • Authentication: Both (hoặc theo yêu cầu của VNPT).

  • Registration: Send (Nếu là đường IP Public) hoặc None (Nếu là đường Trunk theo IP Static/IP Peering).

  • SIP Server: Nhập IP Softswitch của VNPT.

  • SIP Server Port: Thường là 5060.

Tab pjsip Settings -> Advanced:

  • Contact User: Nhập số điện thoại (Username).

  • From Domain: Nhập IP Softswitch của VNPT hoặc vob.vnpt.vn.


3. Cấu hình Codec

Chuyển sang tab pjsip Settings -> Codec:

  • VNPT tại Việt Nam thường sử dụng ulaw, alaw (G.711) và đôi khi là g729. Hãy đảm bảo bạn đã tích chọn chúng.


4. Cấu hình Inbound/Outbound Route

Sau khi Trunk báo trạng thái Online (có thể kiểm tra trong Asterisk Info), bạn cần thực hiện:

  • Inbound Route: Để nhận cuộc gọi từ ngoài vào.

    • Vào Connectivity -> Inbound Routes.

    • DID Number: Nhập số điện thoại của bạn.

    • Set Destination: Chọn máy nhánh (Extension) hoặc IVR mà bạn muốn đổ chuông.

  • Outbound Route: Để gọi ra ngoài.

    • Vào Connectivity -> Outbound Routes.

    • Tạo Route, trong phần Trunk Sequence, chọn VNPT_Trunk bạn vừa tạo.


5. Lưu ý quan trọng về Firewall

Nếu bạn dùng Sophos hoặc Cisco như trong hệ thống bạn đang quản lý:

  • NAT: Phải đảm bảo cổng 5060 (UDP) và dải port RTP (thường là 10000-20000) được phép đi qua firewall.

  • SIP ALG: Hãy TẮT (Disable) tính năng SIP ALG trên router/firewall vì nó thường xuyên làm lỗi tín hiệu SIP (gây ra tình trạng gọi được nhưng không có tiếng hoặc rớt cuộc gọi sau 30 giây).

[FREEPBX] - Hướng dẫn Chặn Extension 9000 & 9001 gọi ra ngoài qua Outbound Route


1. Tạo Outbound Route mới để chặn

  • Vào menu Connectivity -> Outbound Routes.

  • Nhấn + Add Outbound Route. 

  • Route Name: Đặt tên dễ nhớ như BLOCK_EXIT_SPECIAL hoặc DENY_9000_9001.

  • Route Sequence: Quan trọng nhất, hãy chọn Top (hoặc chọn Before [Tên Route VNPT hiện tại]). Route này phải nằm ở vị trí số 1.

2. Cấu hình Dial Patterns (Điều kiện chặn)

Chuyển sang tab Dial Patterns. Đây là nơi bạn định danh các số bị cấm:

Match PatternCallerIDGiải thích
.9000Cho phép số 9000 gọi bất kỳ số nào (.) nhưng sẽ bị chặn ở bước tiếp theo.
.9001Cho phép số 9001 gọi bất kỳ số nào (.) nhưng sẽ bị chặn ở bước tiếp theo.

Lưu ý: Dấu chấm . đại diện cho tất cả các ký tự/số mà người dùng bấm.

3. Thiết lập "Đường cụt" (Chặn cuộc gọi)

  • Chuyển sang tab Connectivity.

  • Tại mục Trunk Sequence for Matched Routes: Bạn để trống hoàn toàn, không chọn bất kỳ Trunk VNPT hay Trunk nào khác vào đây.

  • Tại mục Optional Destinations (nếu phiên bản FreePBX của bạn có):

    • On Congestion: Chọn Terminate Call và chọn một âm báo như Play Busy Tone hoặc Play Circuit Busy.

4. Lưu và áp dụng

  • Nhấn Submit.

  • Nhấn nút Apply Config màu đỏ ở góc trên bên phải.


Kiểm tra thứ tự Route (Rất quan trọng)

Sau khi nhấn Submit, hãy nhìn lại danh sách Outbound Routes ở cột bên phải. Thứ tự phải trông như thế này:

  1. BLOCK_EXIT_SPECIAL (Route vừa tạo - Không có Trunk).

  2. VNPT_OUTBOUND (Route cũ của bạn - Có Trunk VNPT).

Nguyên lý hoạt động:

Khi số 9000 thực hiện gọi ra, hệ thống sẽ khớp ngay với Route đầu tiên (vị trí số 1). Vì Route này không có đường ra (Trunk), cuộc gọi sẽ bị ngắt ngay lập tức và không bao giờ chạm tới được Route VNPT ở vị trí số 2. Các số nội bộ khác (không phải 9000, 9001) sẽ không khớp Route 1 và tự động nhảy xuống Route 2 để gọi ra ngoài bình thường.

4/13/26

HƯỚNG DẪN XỬ LÝ LỖI "LEGACY ACCOUNT" TRÊN SHAREPOINT M365

 (Khi tạo mới tài khoản trùng Email với người cũ đã nghỉ việc)

1. Nguyên nhân lỗi

Khi bạn xóa một tài khoản và tạo lại tài khoản mới với địa chỉ Email y hệt (UPN giống nhau), SharePoint sẽ xảy ra xung đột định danh:

  • Tài khoản cũ: Có một mã định danh hệ thống (Object ID) riêng.

  • Tài khoản mới: Được cấp một Object ID hoàn toàn mới dù tên hiển thị và email không đổi.

  • Xung đột: SharePoint vẫn lưu bản ghi cũ trong bộ nhớ đệm của Site. Khi tài khoản mới đăng nhập, hệ thống phát hiện Email trùng nhưng ID không khớp, dẫn đến thông báo lỗi: "There is a legacy account on this site that uses the same email address."


2. Quy trình xử lý triệt để

Bước 1: Xóa User khỏi danh sách người dùng ẩn (Site Collection)

Đây là bước bắt buộc để xóa "dấu vết" của tài khoản cũ trên Site đó.

  1. Truy cập vào Site SharePoint đang bị báo lỗi.

  2. Trên thanh địa chỉ trình duyệt, thêm đoạn mã sau vào ngay sau đường dẫn của Site: /_layouts/15/people.aspx?MembershipGroupId=0 (Ví dụ: https://[ten-mien-cua-ban].sharepoint.com/sites/[ten-site]/_layouts/15/people.aspx?MembershipGroupId=0)

  3. Tìm kiếm Email của người dùng trong danh sách hiện ra.

  4. Tích chọn vào User đó.

  5. Vào menu Actions -> Chọn Delete Users from Site Collection.

Bước 2: Dọn dẹp User Profile trên SharePoint Admin Center

  1. Truy cập vào trang quản trị SharePoint Admin Center.

  2. Chọn More features -> Tìm mục User profiles và nhấn Open.

  3. Chọn Manage User Profiles.

  4. Tìm kiếm Email của User. Nếu thấy bản ghi cũ còn tồn tại, hãy xóa nó đi.

  5. Đợi khoảng 15 phút để hệ thống đồng bộ lại thông tin mới nhất từ hệ thống.

Bước 3: Cấp lại quyền truy cập

  1. Quay lại thư mục hoặc Site cần chia sẻ.

  2. Thực hiện thao tác Share hoặc Add member lại cho User.

  3. Lúc này, SharePoint sẽ ghi nhận User với mã định danh mới và cho phép truy cập bình thường.


3. Lưu ý đối với người dùng

Để tránh việc trình duyệt lưu lại thông tin đăng nhập cũ gây lỗi lặp lại:

  • Yêu cầu User sử dụng trình duyệt ẩn danh để kiểm tra ngay sau khi xử lý.

  • Nếu dùng ứng dụng OneDrive trên máy tính, hãy vào Credential Manager xóa các dòng thông tin đăng nhập cũ liên quan đến Microsoft Office trước khi đăng nhập lại.

Mẹo quản trị: Đối với các vị trí nhân sự thay thế nhau thường xuyên, bạn nên cân nhắc việc đổi mật khẩu và thu hồi quyền truy cập cũ thay vì xóa hoàn toàn tài khoản, giúp giữ nguyên cấu hình hệ thống và tránh các lỗi xung đột ID như trên.

4/8/26

HƯỚNG DẪN CẤU HÌNH GỌI RA ĐẦU SỐ 1900 CHO MÁY NHÁNH CỤ THỂ

Hệ thống: FreePBX / Asterisk

Áp dụng cho: Máy nhánh 9000 và 9001

Mục tiêu: Cho phép gọi số 1900545481 (10 chữ số) và các số 1900 khác.


1. KIẾN THỨC CƠ BẢN VỀ DIAL PATTERNS

Trong giao diện cấu hình, bạn cần chú ý các ô sau:

  • Match Pattern: Định dạng số điện thoại muốn gọi.

    • 1900XXXXXX: Khớp chính xác các số có 10 chữ số bắt đầu bằng 1900 (như số 1900.5454.81).

    • 1900.: Khớp với tất cả các số bắt đầu bằng 1900 (không phân biệt độ dài 8 hay 10 số).

  • CallerID: Số máy nhánh (Extension) được phép thực hiện quy tắc này.


2. CÁC BƯỚC THỰC HIỆN CẤU HÌNH

Bước 1: Truy cập mục Outbound Routes

  1. Đăng nhập vào giao diện Admin của tổng đài.

  2. Chọn menu Connectivity -> Outbound Routes.

  3. Chọn Route mà bạn đang dùng để gọi ra ngoài (ví dụ: Outbound_Viettel, VNPT_Route,...).

Bước 2: Thiết lập quy tắc cho máy nhánh 9000 và 9001

Tại tab Dial Patterns, bạn thêm 2 dòng mới với thông số chính xác như sau:

STTPrependPrefixMatch PatternCallerIDGhi chú
1(trống)(trống)1900.9000Cho phép máy 9000 gọi mọi số 1900
2(trống)(trống)1900.9001Cho phép máy 9001 gọi mọi số 1900

Lưu ý: Nếu bạn chỉ muốn cho phép gọi duy nhất số 1900545481, hãy thay 1900. bằng 1900545481 vào ô Match Pattern.

Bước 3: Kiểm tra và Loại bỏ quy tắc chung (Nếu có)

Để đảm bảo chỉ có 9000 và 9001 gọi được, bạn cần:

  • Kiểm tra xem có dòng nào có Match Pattern là 1900. hoặc 1900XXXXXX mà ô CallerID đang để trống hay không.

  • Nếu có, hãy Xóa (Delete) hoặc Chỉnh sửa dòng đó. Nếu để trống CallerID, tất cả các máy khác trong công ty vẫn sẽ gọi được 1900.

Bước 4: Lưu và Áp dụng (Quan trọng)

  1. Kéo xuống cuối trang và nhấn nút Submit.

  2. Quan sát phía trên cùng bên phải màn hình, nhấn vào nút Apply Config (màu đỏ) để hệ thống cập nhật thay đổi.


3. KIỂM TRA SAU CẤU HÌNH

  • Thử nghiệm: Dùng máy 9000 hoặc 9001 bấm gọi số 1900545481.

  • Trường hợp lỗi:

    • Nếu báo “All circuits are busy”: Kiểm tra lại số dư tài khoản của Trunk nhà mạng (vì gọi 1900 tốn phí cao).

    • Nếu báo “Your call cannot be completed as dialed”: Kiểm tra lại xem bạn đã nhấn Apply Config chưa hoặc xem lại số lượng chữ số X trong Match Pattern đã đủ chưa.

4/2/26

HƯỚNG DẪN RESET PASSWORD & CẤU HÌNH SSH FREEPBX 17 (DEBIAN)

 

I. QUY TRÌNH RESET PASSWORD ROOT QUA CONSOLE (GRUB)

Áp dụng khi quên mật khẩu đăng nhập màn hình đen (CLI) trên VMware/Hyper-V.

Bước 1: Truy cập chế độ chỉnh sửa GRUB

  1. Khởi động lại máy ảo FreePBX 17.
  2. Ngay khi màn hình menu khởi động hiện ra, nhấn phím e trên bàn phím.

Bước 2: Thay đổi tham số khởi động

  1. Tìm dòng bắt đầu bằng chữ linux. Di chuyển con trỏ xuống cuối dòng đó.
  2. Nhấn phím cách (Space) và gõ chính xác: init=/bin/bash
  3. Nhấn F10 (hoặc Ctrl + X) để khởi động vào chế độ khẩn cấp.

Bước 3: Đặt mật khẩu mới

  1. Gắn lại quyền ghi cho hệ thống:

Bash

mount -o remount,rw /

  1. Đổi mật khẩu cho tài khoản root:

Bash

passwd root

(Nhập mật khẩu mới 2 lần. Lưu ý: Màn hình sẽ không hiển thị ký tự khi gõ).

  1. Lưu thay đổi và khởi động lại:

Bash

sync

exec /sbin/init


II. CẤU HÌNH CHO PHÉP ĐĂNG NHẬP SSH TỪ XA

Mặc định Debian 12 chặn Root đăng nhập qua SSH, bạn cần mở quyền này sau khi đã có pass.

Bước 1: Chỉnh sửa file cấu hình SSH

  1. Đăng nhập vào CLI bằng user root và pass mới.
  2. Gõ lệnh: nano /etc/ssh/sshd_config
  3. Tìm dòng: #PermitRootLogin prohibit-password hoặc PermitRootLogin no.
  4. Sửa thành: PermitRootLogin yes (Xóa dấu # ở đầu dòng).
  5. Nhấn Ctrl + O, Enter để lưu và Ctrl + X để thoát.

Bước 2: Khởi động lại dịch vụ SSH

Bash

systemctl restart ssh


III. RESET MẬT KHẨU QUẢN TRỊ WEB (GUI)

Nếu bạn vào được CLI nhưng quên mật khẩu trang Web Admin.

  1. Tại dấu nhắc lệnh (CLI), gõ lệnh sau:

Bash

fwconsole admin reset mật_khẩu_mới

  1. Hệ thống sẽ tự động cập nhật mật khẩu cho tài khoản quản trị đầu tiên.

IV. LƯU Ý QUAN TRỌNG VỀ FIREWALL

Sau khi cấu hình xong, nếu vẫn không SSH được, hãy kiểm tra Firewall trên giao diện Web:

  1. Vào Connectivity -> Firewall -> Networks.
  2. Thêm dải IP mạng nhà máy (100.100.x.x) vào vùng Trusted.
  3. Nếu cần xử lý gấp, có thể tắt tạm Firewall bằng lệnh: fwconsole firewall stop.