🧭 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ànhid_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ùngroot
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.