Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

Lỗi SSH và Ceph Orchestrator khi thêm Node mới


🧭 Tổng quan

Trong quá trình triển khai hoặc vận hành Ceph cluster với cephadm, thao tác thêm node mới (ceph orch host add) đôi khi gặp lỗi bất ngờ, đặc biệt liên quan đến việc SSH không hoạt động đúng, hoặc hệ thống từ chối host key.

Bài viết này chia sẻ một trường hợp thực tế khi thêm node OSD mới vào Ceph Orchestrator bị lỗi Error EINVAL và SSH yêu cầu xác thực dù đã copy key. Bài viết sẽ giúp bạn:

  • Xử lý lỗi SSH: Host key verification failed
  • Xử lý lỗi Ceph Orchestrator không nhận host
  • Khôi phục đăng nhập SSH không mật khẩu giữa các node
  • Cách làm việc với ssh-keygen, ssh-copy-id, authorized_keys

📌 Mô tả sự cố

❗ Lỗi khi thêm host

ceph orch host add CEPH-LAB-OSD-006 172.16.21.6 osd _no_schedule

Kết quả:

Error EINVAL: TypeError: __init__() missing 2 required positional arguments: 'hostname' and 'addr'

❗ SSH không đăng nhập được

Dù đã copy key thủ công, nhưng khi SSH từ MON sang OSD:

ssh -i /home/cephadmin/.ssh/id_rsa cephadmin@172.16.21.6

Lỗi:

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Host key verification failed.

🔍 Phân tích nguyên nhân

Vấn đề Nguyên nhân
SSH yêu cầu mật khẩu Thiếu file id_rsa.pub, hoặc quyền file sai
SSH “REMOTE HOST IDENTIFICATION HAS CHANGED” Máy từ IP cũ gán host key mới, hoặc node bị reinstall
Ceph Orchestrator EINVAL Không kết nối SSH được nên không thu thập hostname/IP

✅ Giải pháp từng bước

🔹 Bước 1: Xử lý lỗi known_hosts

Khi host key thay đổi (do cài lại OS hoặc thay node IP), bạn cần gỡ bản ghi cũ:

ssh-keygen -f "/root/.ssh/known_hosts" -R "172.16.21.6"

Sau đó, thử lại SSH:

ssh -i /home/cephadmin/.ssh/id_rsa cephadmin@172.16.21.6

Chấp nhận fingerprint mới khi được hỏi:

Are you sure you want to continue connecting (yes/no)? yes

🔹 Bước 2: Tạo lại file id_rsa.pub nếu bị thiếu

Nếu chỉ có private key id_rsa, cần sinh lại public key:

ssh-keygen -y -f /home/cephadmin/.ssh/id_rsa > /home/cephadmin/.ssh/id_rsa.pub

🔹 Bước 3: Copy key sang node đích

ssh-copy-id -i /home/cephadmin/.ssh/id_rsa.pub cephadmin@172.16.21.6

Nếu bạn chắc authorized_keys đã chứa đúng key, có thể bỏ qua bước này.

🔹 Bước 4: Sửa quyền thư mục và file .ssh

Trên máy đích (172.16.21.6):

chmod 700 /home/cephadmin/.ssh
chmod 600 /home/cephadmin/.ssh/authorized_keys
chown -R cephadmin:cephadmin /home/cephadmin/.ssh

🔹 Bước 5: Kiểm tra cấu hình sshd

Mở file /etc/ssh/sshd_config, kiểm tra hoặc thêm:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Sau đó restart SSH:

sudo systemctl restart sshd

🔹 Bước 6: Kiểm tra SSH, cần đảm bảo khi ssh sang cephadmin@172.16.21.6 không cần authen nữa là thành công.

ssh -i /home/cephadmin/.ssh/id_rsa cephadmin@172.16.21.6

Nếu không bị hỏi password nữa ⇒ thành công ✅

🔹 Bước 7: Thêm lại host vào Ceph

ceph orch host add CEPH-LAB-OSD-006 172.16.21.6 osd _no_schedule

💡 Sơ đồ kết nối SSH bằng khóa (ASCII)

MON Node (Cephadm)             OSD Node
┌──────────────┐               ┌──────────────┐
│ id_rsa (key) ├───┐     ┌───► │ authorized_keys │
└──────────────┘   │     │     └──────────────┘
┌──────────────┐   │     │
│ id_rsa.pub   ├───┘     │
└──────────────┘         ▼
                Đăng nhập không cần password

✅ Ưu điểm của giải pháp

Ưu điểm Mô tả
Triệt để Xử lý cả SSH lẫn Ceph Orchestrator
Không mất dữ liệu Không phải xóa hay reset Ceph node
Có thể tự động hóa Có thể viết script triển khai key hàng loạt

❌ Nhược điểm

Nhược điểm Ghi chú
Phụ thuộc vào quyền hệ thống Phải root hoặc sudo để sửa quyền .ssh
Không hỗ trợ nếu node bị cô lập mạng Phải đảm bảo kết nối SSH từ MON tới OSD được mở

📌 So sánh – ssh-copy-id vs. copy thủ công

Cách Ưu điểm Nhược điểm
ssh-copy-id Nhanh, tự động kiểm tra file Cần id_rsa.pub
Copy thủ công authorized_keys Chủ động Dễ sai quyền file, sai key

🧠 Lời khuyên

  • Không nên copy file authorized_keys thành id_rsa.pub trừ khi bạn biết chắc nội dung khớp với private key.
  • Luôn chạy lệnh ssh từ user đúng, không dùng root nếu không cần thiết.
  • Nếu vận hành nhiều node, nên viết script ssh-copy-id theo danh sách IP hoặc hostname.

✅ Kết luận

Việc SSH không đăng nhập được bằng key hoặc lỗi khi ceph orch host add là tình huống khá phổ biến trong môi trường hạ tầng Ceph. Qua ví dụ thực tế này, bạn có thể áp dụng quy trình xử lý từ gỡ known_hosts, tạo lại id_rsa.pub, kiểm tra quyền file .ssh, đến xác nhận SSH key hoạt động trước khi thao tác với Ceph Orchestrator.

Hãy đầu tư kiểm soát SSH chuẩn hóa từ đầu – đó là nền tảng vững chắc cho tự động hóa và vận hành hạ tầng.