Kiểm tra dấu vân tay để tìm khóa ECDSA được gửi bởi máy chủ từ xa [đã đóng]


24

Tôi đã nhận được thông báo cảnh báo nổi tiếng khi cố gắng ssh vào máy chủ:

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.

Và tôi biết tại sao bởi vì tôi đã thay đổi ip của máy chủ đó. Nhưng nếu không phải vậy, làm cách nào tôi có thể kiểm tra dấu vân tay cho khóa ECDSA được gửi bởi máy chủ từ xa?

Tôi đã cố gắng để làm như vậy bằng cách:

echo -n ipofthehost | sha256sum

Nhưng tôi không có cùng dấu vân tay. Tôi cũng đã thử loại "hostname, ip" giống như trong aws nhưng tôi không có kết quả phù hợp.

Nếu tôi xóa lối vào khỏi tệp know_hosts của mình và tôi cố gắng ssh một lần nữa, nó sẽ thành công và thông báo như sau:

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

Vì vậy, những gì nó được áp dụng sha256sum để có được dấu vân tay và làm thế nào tôi có thể kiểm tra nó?


2
Nếu không có giá trị tốt, bạn không thể kiểm tra nó. Bạn chỉ viết nó xuống lần đầu tiên khi bạn khởi động SSHd và các khóa được tạo và kiểm tra xem giá trị tốt đã biết đó.

Tôi đã chỉnh sửa câu hỏi của bạn. Trang web này chỉ chấp nhận các câu hỏi về một môi trường kinh doanh chuyên nghiệp. Các câu hỏi mạng gia đình là không chính thức ở đây, tôi đã cố gắng lưu câu hỏi của bạn với chỉnh sửa của tôi. Hiện tại có một cuộc bỏ phiếu chống lại câu hỏi của bạn để đóng nó trên mặt đất này.
peterh nói rằng phục hồi Monica

@ user186340 Có vẻ đúng là "bạn chỉ viết nó xuống lần đầu tiên khi bạn khởi động SSHd". Nếu bạn có quyền truy cập vào máy đang chạy SSHd, bạn có thể làm /etc/ssh/ssh_host_ecdsa_key.pubđể lấy dấu vân tay. Tôi vừa làm.
jamadagni

Câu trả lời:


12

Dấu vân tay khóa công khai không phải là hàm băm đơn giản của chuỗi IP.

Để lấy khóa công khai của máy chủ từ xa, bạn có thể sử dụng ssh-keyscan <IP>sau đó bạn có thể sử dụng các công cụ thông thường để trích xuất dấu vân tay của nó ( ssh-keygen -lf <public_key_file>).

Cuối cùng, bạn có thể so sánh với dấu vân tay hiện tại trong known_hoststệp của mình với ssh-keygen -l -F <domain_or_ip>.


2
Tôi bối rối tại sao khi kết nối qua SSH và buộc khóa ecdsa lần đầu tiên ( ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' william@my.server) nó mang lại cho tôi dấu vân tay chữ và số gồm 43 chữ số ( ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.) khi tôi chạy ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pubtôi nhận được hex 32 ký tự ??
William Turrell

1
@WilliamTurrell Điều này xảy ra do máy chủ của bạn phải có phiên bản cũ hơn (có thể là openSSH 6.8) ssh-keygen(hoặc nhà cung cấp máy chủ của bạn đã không theo kịp thời gian và vẫn chỉ cung cấp băm md5 thay vì SHA256 mới). Có cách giải quyết được liệt kê ở đây: superuser.com/questions/929566
SeldomNeedy

9

Chi tiết hơn một chút : Vì thông báo cảnh báo đề cập đến dấu vân tay của khóa ECDSA được gửi bởi máy chủ từ xa, chúng tôi thu thập thông tin về khóa công khai (ecdsa) của máy chủ:

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

Sau đó, chúng ta có thể tìm ra vị trí trong tệp know_hosts mà khóa công khai (ecdsa) của chúng ta là:

ssh-keygen -l -F ipofhost

Nếu chúng ta muốn so sánh dấu vân tay, chúng ta phải đặt nội dung của tệp know_hosts (chỉ mục nhập liên quan đến máy chủ này), chúng ta có thể gọi nó là ecdsa_file_from_ Unknown_hosts và sau đó so sánh chúng như sau:

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

Và kiểm tra nếu hiển thị cùng băm.

Tất nhiên họ không khớp, đó là lý do tại sao tôi nhận được thông báo cảnh báo (ssh kiểm tra kết quả khớp này trong nội bộ). Nếu chúng tôi chắc chắn về việc thay đổi ip (vì vậy chúng tôi không phải chịu một cuộc tấn công trung gian), chúng tôi có thể xóa mục nhập của máy chủ đó trong tệp know_hosts của chúng tôi và lần sau chúng tôi sẽ đưa vào đó một mục mới mới cho nó sẽ được thêm vào tập tin đó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.