SSH là một giao thức mạng an toàn tạo ra một đường hầm được mã hóa giữa các hệ thống. Nó vẫn được các lập trình viên ưa thích khi họ cần truy cập từ xa vào máy tính mà không cần giao diện người dùng đồ họa. Mặc dù SSH đã tồn tại trong nhiều thập kỷ và đã phục vụ vô số người dùng một cách đáng tin cậy, nhưng nó vẫn có thể bị ảnh hưởng bởi các lỗi nhất định.
Nhiều lỗi này đã trở thành những vấn đề nổi tiếng trong cộng đồng SSH, và những cách giải quyết của chúng được ghi chép rộng rãi. Bao gồm: lỗi tương thích tường lửa, Vấn đề tiêm khóa công khai SSH., Vấn đề chế độ khóa tệp SSH.và lỗi "Warning: Remote Host Identification Has Changed" (Cảnh báo: Xác định danh tính máy chủ từ xa đã thay đổi).
Lỗi này xảy ra trên tất cả các hệ điều hành chính, bao gồm Windows, Linux, và macOS. Nguồn gốc của vấn đề có thể là một mối lo ngại bảo mật hợp lệ chứ không phải là một lỗi kỹ thuật đơn giản. Trong bài viết này, chúng tôi sẽ giải thích tại sao điều này xảy ra, ý nghĩa của nó đối với bảo mật kết nối SSH của bạn, và cách giải quyết nó trên từng nền tảng chính.
Điều gì kích hoạt lỗi "Warning: Remote Host Identification Has Changed" (và liệu bạn có nên lo lắng?).
Thông báo "Warning: Remote Host Identification Has Changed" (Cảnh báo: Xác định danh tính máy chủ từ xa đã thay đổi) xuất hiện khi khóa công khai SSH được lưu trữ trong known_hosts tệp của bạn không khớp với khóa mà máy chủ hiện đang trình bày. Sự không khớp này kích hoạt cơ chế bảo mật tích hợp của SSH để bảo vệ bạn khỏi các mối đe dọa tiềm ẩn.
Những lý do hợp lệ để thay đổi khóa máy chủ.
Có một số lý do vô tư giải thích tại sao khóa máy chủ của máy chủ có thể thay đổi. Đôi khi bạn sẽ thấy các biến thể như "RSA host key has changed" (Khóa máy chủ RSA đã thay đổi), tùy thuộc vào loại khóa cụ thể đang được sử dụng.

Thay đổi liên quan đến Máy chủ:
- Hệ điều hành máy chủ đã được cài đặt lại hoặc nâng cấp
- Máy chủ đã được xây dựng lại hoặc phục hồi từ sao lưu
- Cấu hình SSH của máy chủ đã được đặt lại
- Máy vật lý hoặc ảo đã được thay thế
- Di chuyển máy chủ sang phần cứng mới
Thay đổi Cấu hình Mạng:
- Nhà cung cấp đám mây tái sử dụng địa chỉ IP theo thời gian, hoặc kết nối của bạn được định tuyến qua bộ cân bằng tải.
- DHCP đã cấp lại địa chỉ IP cho một máy khác
- Địa chỉ IP của một máy chủ bị loại bỏ đã được gán cho hệ thống mới
- Bản ghi DNS đã được cập nhật để trỏ đến máy chủ khác

Hành động Quản lý Khóa:
- Quản trị viên hệ thống đã tạo lại khóa máy chủ theo cách thủ công vì mục đích bảo mật
- Phần mềm máy chủ SSH đã được cài đặt lại
- Chính sách bảo mật yêu cầu xoay vòng khóa
Điều quan trọng là nhận ra rằng thay đổi mật khẩu người dùng không ảnh hưởng đến khóa máy chủ. Đây là những cơ chế xác thực riêng biệt. Khóa máy chủ chỉ thay đổi khi máy chủ hoặc cấu hình SSH của nó được sửa đổi.
Khi nào cần Coi Trọng Cảnh báo
Mặc dù nhiều thay đổi khóa máy chủ là hợp pháp, điều này có thể cho thấy một mối đe dọa bảo mật thực sự. Bạn nên lo ngại nếu:
- Bạn chưa thực hiện bất kỳ thay đổi nào đối với máy chủ hoặc không biết về bất kỳ bảo trì nào được lên lịch
- Bạn không thể xác minh lý do thay đổi khóa với quản trị viên máy chủ
- Máy chủ được truy cập qua các mạng công khai hoặc kết nối không đáng tin cậy
- Bạn đang kết nối đến các hệ thống sản xuất hoặc máy chủ chứa dữ liệu nhạy cảm

Tấn công trung gian, mặc dù tương đối hiếm gặp, vẫn có thể xảy ra. Trong những cuộc tấn công này, kẻ tấn công đặt mình ở giữa máy tính của bạn và máy chủ hợp pháp, chặn tất cả lưu lượng truy cập.
Lỗi do người dùng và kỹ thuật lừa đảo xã hội chiếm 68% các sự cố bảo mật, vì vậy cảnh báo là chìa khóa. Bạn có thể bảo vệ hệ thống của mình thêm bằng cách tìm hiểu về phòng chống tấn công brute-force.
Theo thống kê gần đây từ IBM, chi phí trung bình toàn cầu của một vi phạm dữ liệu là $4,44 triệu vào năm 2025, với thời gian phát hiện trung bình là tám tháng. Điều này giải thích tại sao cơ chế xác minh khóa máy chủ của SSH tồn tại và tại sao bạn không bao giờ nên bỏ qua những cảnh báo này mà không điều tra.
Cách Xác Minh Rằng Cảnh Báo Là An Toàn
Trước khi tiến hành khắc phục sự cố, hãy thực hiện các bước xác minh sau:

- Kiểm tra với đội ngũ của bạn: Nếu bạn chia sẻ quyền truy cập máy chủ, hãy hỏi đồng nghiệp xem họ đã thực hiện thay đổi nào không
- Xem xét nhật ký máy chủ: Kiểm tra các bản ghi bảo trì hoặc nhật ký thay đổi để tìm hoạt động gần đây
- Liên hệ nhà cung cấp lưu trữ của bạn: Nếu sử dụng các dịch vụ đám mây, hãy xác minh xem có bảo trì nào xảy ra không
- Sử dụng một kênh an toàn: Nếu có thể, kết nối qua một mạng an toàn đã biết để xác minh dấu vân tay
- So sánh dấu vân tay: Một số nhà cung cấp lưu trữ hiển thị dấu vân tay SSH hiện tại trong các bảng điều khiển của họ
Nếu bạn có thể xác nhận rằng thay đổi khóa là hợp pháp, bạn có thể an toàn tiếp tục với việc xóa khóa cũ và chấp nhận khóa mới.
Nếu bạn muốn tránh tái chỉ định IP động hoặc xung đột khóa máy chủ, cơ sở hạ tầng bạn chọn đóng vai trò quan trọng.
Cloudzy cung cấp Lưu trữ SSH VPS với các IP tĩnh chuyên dụng. Bạn chạy trên các bộ xử lý AMD Ryzen 9 với lưu trữ NVMe để thực thi lệnh tức thì. Mạng của chúng tôi đạt 40 Gbps trên 12 vị trí toàn cầu. Ngoài ra, chúng tôi bao gồm bảo vệ DDoS miễn phí để giữ kết nối của bạn an toàn.
Cách Khắc Phục Lỗi "Remote Host Identification Has Changed"
Cách khắc phục rất đơn giản: xóa bản ghi khóa cũ khỏi hệ thống của bạn. Điều này xóa sự không khớp và cho phép bạn lưu khóa mới lần tới khi bạn kết nối. Hãy xem hướng dẫn của chúng tôi về Các máy khách SSH để biết thêm công cụ.
Ngoài ra, bạn có thể thực hiện việc này bằng một lệnh duy nhất hoặc bằng cách chỉnh sửa tệp thủ công.
Phương pháp 1: Dòng lệnh (Nhanh nhất)
Phương pháp này hoạt động với macOS, Linux và Windows 10+ (sử dụng OpenSSH). Đây là cách nhanh nhất để khắc phục lỗi. Để biết thêm thông tin, bạn có thể đọc trang hướng dẫn ssh-keygen.
- Mở terminal của bạn.
- Chạy lệnh này (thay thế hostname bằng IP hoặc tên miền của máy chủ của bạn):
ssh-keygen -R hostname
This command automatically finds the old key in your known_hosts file and deletes it. Method 2: Manual File Editing (macOS)
Nếu bạn thích trình soạn thảo trực quan, bạn có thể xóa khóa theo cách thủ công. Thông báo lỗi thường cho biết chính xác số dòng cần xóa.
Mở terminal và chỉnh sửa tệp bằng Nano:
nano ~/.ssh/known_hosts
Tìm dòng từ thông báo lỗi của bạn. Xóa nó, rồi nhấn Ctrl + X và Y để lưu.

Giải pháp cho Windows
Người dùng Windows thường sử dụng khách hàng OpenSSH tích hợp hoặc PuTTY.
Tùy chọn 1: OpenSSH trên Windows (Windows 10/11)
Trên Windows 10 và 11, OpenSSH là một tính năng tùy chọn. Thêm nó qua Settings > Apps > Optional features. Server 2025 bao gồm khách hàng, nhưng bạn phải bật nó.
Nếu bạn sử dụng PowerShell hoặc Command Prompt, lệnh ssh-keygen từ Phương pháp 1 cũng hoạt động ở đây.
Để chỉnh sửa tệp theo cách thủ công:
- Nhấn Phím Windows + R.
- Loại %USERPROFILE%\.ssh và nhấn Enter.
- Mở known_hosts tệp bằng Notepad.
- Xóa dòng gây ra lỗi và lưu tệp.
Để quản lý khóa đúng cách, xem hướng dẫn của chúng tôi về tạo khóa SSH trong Windows.
Tùy chọn 2: Sử dụng PuTTY
PuTTY lưu trữ khóa trong Registry Windows thay vì trong tệp.
- Mở Registry Editor (Nhấn Phím Windows + R, nhập regedit, và nhấn Enter).
- Điều hướng đến: HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys\
- Tìm mục nhập khớp với hostname hoặc địa chỉ IP của máy chủ của bạn.
- Nhấp chuột phải vào nó và chọn Xóa.

Cách khắc phục Linux
Cái ssh-keygen lệnh mà chúng tôi đã đề cập đến Phương pháp 1 là cách tiêu chuẩn để khắc phục điều này trên Linux. Nó nhanh và được hỗ trợ natively.
Chỉnh Sửa Thủ Công
Nếu bạn muốn xem nội dung tệp, bạn có thể chỉnh sửa nó bằng trình soạn thảo văn bản như Nano.
- Mở terminal của bạn.
- Loại nano ~/.ssh/known_hosts và nhấn Enter.
- Tìm số dòng được đề cập trong thông báo lỗi của bạn.
- Xóa dòng đó, sau đó nhấn Ctrl + X và Y để lưu.
Bạn cũng có thể sử dụng Vim (vim ~/.ssh/known_hosts) nếu bạn quen thuộc với nó.

Cảnh Báo Về Việc Vô Hiệu Hóa Kiểm Tra
Bạn có thể buộc SSH kết nối mà không cần xác minh, nhưng điều này rất rủi ro. Nó bỏ qua bảo vệ chống lại các cuộc tấn công trung gian.
Chỉ sử dụng phương pháp này để kiểm tra cuc bộ trên các mạng đáng tin cậy. Đối với macOS và Linux, nhập lệnh này:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected]
Nếu bạn đang sử dụng Windows, đường dẫn Unix không hoạt động. Bạn phải sử dụng NUL để làm cho việc bỏ qua hoạt động:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL [email protected]
Không chạy các ghi đè này trên các kết nối công khai hoặc máy chủ live.
Khắc phục sự không khớp khóa là bảo trì thường xuyên, nhưng bạn có thể làm nhiều hơn để bảo mật kết nối của mình. Các bot thường nhắm mục tiêu cổng mặc định 22 với các cuộc tấn công vét cạn. Bạn có thể tránh hầu hết tiếng ồn nền này bằng cách thay đổi cổng SSH trong Linux thành một cái gì đó ít dễ đoán hơn.

Không bao giờ sử dụng phương pháp này cho máy chủ sản xuất hoặc qua các mạng không đáng tin cậy.
Cách Ngăn Chặn Thông Báo "Remote Host Identification Has Changed" Lần Tới
Mặc dù bạn không thể luôn ngăn chặn những thay đổi khóa host hợp pháp, nhưng bạn có thể giảm thiểu gián đoạn và duy trì các thực tiễn bảo mật tốt hơn.
Hướng Dẫn Tham Khảo Nhanh
| Vai trò của bạn | Các Chiến Lược Chính |
| Quản trị viên hệ thống | Sao lưu khóa, ghi chép các thay đổi, sử dụng chứng chỉ và xoay khóa định kỳ |
| Người Dùng Thông Thường | Quản lý kho hàng, xác minh qua kênh bảo mật và theo dõi nhật ký |
| Môi trường đám mây
Người dùng |
Sử dụng tên DNS, tận dụng các công cụ của nhà cung cấp và triển khai cơ sở hạ tầng dưới dạng mã |

Dành cho Quản trị viên hệ thống
Sao lưu các khóa máy chủ: Lưu khóa từ /etc/ssh/ trước khi cài đặt lại hệ điều hành. Khôi phục chúng sau đó để tránh những cảnh báo cho người dùng của bạn.
Tài liệu các Thay đổi Được Lập Kế hoạch: Cảnh báo người dùng trước khi thay đổi khóa và chia sẻ các dấu vân tay mới một cách an toàn. Điều này cho phép họ xác minh kết nối.
Sử dụng Chứng chỉ SSH: Các đội lớn nên sử dụng một cơ quan cấp chứng chỉ tập trung. Nó ký các khóa máy chủ và loại bỏ nhu cầu xác minh thủ công.
Triển khai Xoay Khóa: Lên lịch thay đổi khóa host của bạn. Các cập nhật có kế hoạch sẽ dễ quản lý hơn so với những cập nhật bất ngờ.
Cho Người Dùng Thường Xuyên
Duy trì Kho hàng: Lưu giữ bản ghi riêng về dấu vân tay máy chủ hoặc sử dụng tài liệu bảo mật của team.
Xác minh qua kênh độc lập: Luôn xác nhận keys với một nguồn đáng tin cậy như cloud console, không nên dựa vào tin nhắn thông thường.
Giám sát Nhật ký Kiểm tra nhật ký SSH cục bộ của bạn thường xuyên để phát hiện các mẫu kết nối lạ hoặc lỗi lặp lại.
Sử dụng Quản lý Cấu hình: Dùng các tệp cấu hình SSH để quản lý môi trường phát triển động mà không cần hạ thấp các cài đặt bảo mật.
Cho Môi Trường Cloud Động
Sử dụng Tên DNS: Kết nối bằng tên máy chủ thay vì địa chỉ IP. Điều này đảm bảo tính nhất quán khi địa chỉ thay đổi.
Công cụ cloud mạnh mẽ: Sử dụng bảng điều khiển của nhà cung cấp để lấy dấu vân tay hiện tại. Xác minh khóa dựa trên những công cụ này trước khi chấp nhận thay đổi.
Cơ sở hạ tầng dưới dạng Mã: Tự động hóa xác minh khóa bằng các công cụ như Terraform. Đối với cài đặt nâng cao, bạn cũng có thể sử dụng proxy SSH SOCKS5.
Máy chủ Bastion: Thiết lập các máy chủ jump với khóa ổn định. Chúng hoạt động như các điểm vào an toàn cho cơ sở hạ tầng động của bạn.
Kết luận
Cảnh báo "Remote Host Identification Has Changed" (Định danh máy chủ từ xa đã thay đổi) là một tính năng bảo mật quan trọng của SSH, không phải một lỗi có thể bỏ qua. Mặc dù cảnh báo này thường xuất hiện vì những lý do hợp lệ như bảo trì máy chủ hoặc thay đổi cấu hình, nhưng nó đóng vai trò quan trọng trong việc bảo vệ bạn khỏi các cuộc tấn công man-in-the-middle và truy cập trái phép.
Khi gặp cảnh báo này, hãy xác minh nguyên nhân trước khi tiếp tục. Trong hầu hết các trường hợp, giải pháp khá đơn giản: xóa khóa máy chủ cũ bằng các phương pháp được hướng dẫn cho hệ điều hành của bạn, sau đó chấp nhận khóa mới khi kết nối tiếp theo.
Bằng cách hiểu cách các khóa máy chủ SSH hoạt động và tuân theo các phương pháp hay nhất, bạn có thể duy trì cả bảo mật và tiện lợi trong quy trình truy cập từ xa của mình. Để tìm hiểu thêm về việc chuyển tệp một cách an toàn, hãy xem sao chép tệp qua SSH.