it-swarm-vi.tech

Làm cách nào để xóa kiểm tra khóa RSA nghiêm ngặt trong SSH và vấn đề ở đây là gì?

Tôi có một máy chủ Linux mà bất cứ khi nào tôi kết nối, nó sẽ hiển thị cho tôi thông báo đã thay đổi khóa Máy chủ SSH:

$ ssh root @ Host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @ CẢNH BÁO: TỪ XÁC NHẬN NHẬN DẠNG máy chủ ĐÃ THAY ĐỔI! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ IT IS POSSIBLE RATNG MỌI NGƯỜI IS LÀM VIỆC NÀO! Ai đó có thể đang nghe lén bạn ngay bây giờ -thiết bị trung gian)! Cũng có thể khóa Máy chủ RSA vừa được thay đổi. Dấu vân tay của khóa RSA được gửi bởi Máy chủ từ xa là 93: a2: 1b: 1c: 5f: 3e: 68: 47: bf : 79: 56: 52: f0: ec: 03: 6b. Vui lòng liên hệ với quản trị viên hệ thống của bạn. Thêm khóa Máy chủ chính xác trong /home/emerson/.ssh/ Unknown_hosts để thoát khỏi thông báo này. Khóa vi phạm trong/home/emerson/.ssh/know_hosts: 377

Khóa máy chủ RSA cho Host1 đã thay đổi và bạn đã yêu cầu kiểm tra nghiêm ngặt. Xác minh khóa máy chủ không thành công.

Nó giữ cho tôi trong một vài giây đăng nhập và sau đó nó đóng kết nối.

Host1: ~/.ssh # Đọc từ máy chủ lưu trữ từ xa1: Thiết lập lại kết nối bằng ngang hàng Kết nối với Host1 đã đóng.

Có ai biết chuyện gì đang xảy ra và tôi có thể làm gì để giải quyết vấn đề này không?

45
setatakahashi

Vui lòng không xóa toàn bộ tệp know_hosts theo khuyến nghị của một số người, điều này hoàn toàn không nói lên quan điểm cảnh báo. Đây là một tính năng bảo mật để cảnh báo bạn rằng một người đàn ông trong cuộc tấn công giữa có thể đã xảy ra.

Tôi đề nghị bạn xác định lý do tại sao nó nghĩ rằng một cái gì đó đã thay đổi, rất có thể là một bản nâng cấp SSH đã thay đổi các khóa mã hóa do lỗ hổng bảo mật có thể xảy ra. Sau đó, bạn có thể lọc dòng cụ thể đó khỏi tệp know_hosts của mình:

sed -i 377d ~/.ssh/known_hosts

Điều này d xóa dòng 377 như được hiển thị sau dấu hai chấm trong cảnh báo:

/home/emerson/.ssh/ Unknown_hosts:377

Ngoài ra, bạn có thể loại bỏ khóa có liên quan bằng cách làm như sau

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

Vui lòng KHÔNG lọc toàn bộ tệp và đảm bảo đây thực sự là máy bạn muốn kết nối trước khi xóa khóa cụ thể.

71
Adam Gibbins

Tôi nghĩ mặc dù một số câu trả lời ở đây đề cập đến quá trình hành động được đề xuất trong câu hỏi của OP, nhưng nó không trả lời đầy đủ câu hỏi.

Câu hỏi nêu rõ "Làm cách nào để xóa kiểm tra khóa RSA nghiêm ngặt trong SSH và vấn đề ở đây là gì?"

Vấn đề ở đây là, theo lời khuyên của một số người khác, một sự thay đổi trong Máy chủ có thể là do cài đặt lại máy chủ (kịch bản phổ biến nhất). Và giải pháp được đề xuất thực sự là loại bỏ khóa vi phạm khỏi tệp .ssh/ủy quyền bằng một sed nội tuyến.

Tuy nhiên tôi không thấy bất kỳ câu trả lời nào giải quyết phần cụ thể của câu hỏi "Cách xóa kiểm tra khóa RSA nghiêm ngặt trong SSH".

Bạn có thể xóa kiểm tra StricthostKey trong tệp cấu hình ssh của bạn, thường được lưu trữ tại ~/.ssh/config.

Một ví dụ Khối máy chủ được cung cấp dưới đây:

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

Dòng được thêm cụ thể là dòng cuối cùng StrictHostKeyChecking no mà chỉ làm những gì mà. Tùy thuộc vào kịch bản cụ thể của bạn, điều này có thể hữu ích cho bạn, chẳng hạn như chạy nhiều thùng chứa ảo hóa trên một máy chủ chuyên dụng, chỉ trên một vài ips, dừng và bắt đầu một phiên bản khác trên cùng một ip.

27
Joel G Mathew

Một cách khác để xóa StricthostKeyChecking, khi bạn chỉ cần làm điều đó cho một máy chủ duy nhất:

ssh <server> -o StrictHostKeyChecking=no
11
Greg Dougherty

Trước hết, đây có phải là máy của bạn? Bạn đã cố ý thay đổi các phím Host? Nếu không tôi sẽ rất lo lắng rằng một cái gì đó đã thay đổi dữ liệu đó.

Thứ hai, bật lên ssh gỡ lỗi,

ssh -vvv [email protected]

và xem những gì cho bạn biết, cũng hãy thử tìm kiếm,/var/log/safe và/var/log/message trên máy chủ mà bạn đang cố gắng kết nối để tìm manh mối, sshd đưa ra thông báo lỗi tốt.

Thứ ba, máy này có kết nối với internet không? Bạn có nên thực sự cho phép đăng nhập root?

5
Dave Cheney

Như 'Máy chủ' [được định nghĩa rộng rãi, có thể là tất cả mọi thứ từ cài đặt lại/multiboot đến một máy tính hoàn toàn khác với địa chỉ IP bạn đã kết nối trước đó, ví dụ] xuất hiện cho ứng dụng khách ssh đã thay đổi, nó cung cấp cho bạn lỗi.

Không cần thiết phải tắt kiểm tra nghiêm ngặt, cũng không phải là việc xóa bán buôn các phím đã lưu là hợp lý.

Hoàn toàn có thể có hai khóa khác nhau được liệt kê trong know_host cho một tên máy chủ hoặc địa chỉ IP cụ thể; cung cấp cho bạn 2 lựa chọn thay thế tùy theo bạn có nghĩ rằng bạn có thể cần khóa 'cũ' hiện đang được lưu trữ trong know_hosts không

Xóa khóa cụ thể mà nó đang đề cập đến, tại l377 của know_hosts cho OP hoặc giữ cả hai

Cách đơn giản nhất để giữ cả hai, tránh xóa các khóa trong know_hosts, là

  1. Chỉnh sửa các tệp know_host để thêm # khi bắt đầu mục nhập 'cũ' được tham chiếu trong tệp know_hosts [@ l377]
  2. Kết nối [ssh với Máy chủ], đồng ý với Lời nhắc để thêm khóa mới 'tự động'
  3. Sau đó chỉnh sửa lại know_host để xóa #

thêm câu trả lời tại "Thêm khóa Máy chủ chính xác trong know_hosts"/nhiều ssh Khóa máy chủ cho mỗi tên máy chủ?

3
Mark

Bạn đang nhận được điều này bởi vì một cái gì đó đã thay đổi (như NIC mới, IP mới, thay đổi trên phần mềm máy chủ, v.v.). Trọng tâm bảo mật có một bài viết hay về Bảo vệ khóa SSH Host .

Chỉ cần xóa khóa (sử dụng SFTP hoặc tương tự) khỏi máy chủ, bằng cách chỉnh sửa $HOME/.ssh/known_hosts tập tin và chấp nhận cái mới khi kết nối tiếp theo.

Kết nối của bạn có thể bị hủy do cài đặt StricthostKeyChecking. Xem chủ đề này cho một vấn đề tương tự.

3
user1797