Câu hỏi Cách khắc phục cảnh báo về khóa máy chủ ECDSA


Tôi đang cố gắng thiết lập SSH không mật khẩu trên máy chủ Ubuntu với ssh-copy-id myuser@myservernhưng tôi gặp lỗi:

Cảnh báo: khóa máy chủ ECDSA cho 'myserver' khác với khóa cho địa chỉ IP '192.168.1.123'

Điều gì gây ra điều này và làm cách nào để khắc phục sự cố? Tôi đã thử xóa .ssh thư mục trên máy từ xa và đang chạy ssh-keygen -R "myserver" cục bộ, nhưng điều này không giải quyết được lỗi.


211
2018-05-05 19:05


gốc


trong trường hợp của tôi, tôi thay đổi máy chủ (ip) liên kết với miền, sau đó The ECDSA host key for server has changed. Cách của tôi là xóa chuỗi bộ nhớ cache có liên quan về miền trong ~/.ssh/known_hosts. Sau đó, ssh hoạt động. - Ninja


Các câu trả lời:


Xóa khóa được lưu trong bộ nhớ cache cho 192.168.1.123 trên máy cục bộ:

ssh-keygen -R 192.168.1.123

304
2018-05-05 20:20



Đã không làm việc cho tôi trên máy chủ Debian mới cài đặt tại nơi làm việc khi SSHing từ nhà. Ngoài ra, câu trả lời là khá ngắn gọn. - Chris K
/home/wf/.ssh/known_hosts được cập nhật. Nội dung gốc được giữ lại dưới dạng /home/wf/.ssh/known_hosts.old "Cảnh báo: Đã thêm vĩnh viễn khóa máy chủ ECDSA cho địa chỉ IP 'x.x.x.x' vào danh sách các máy chủ đã biết." được hiển thị. và sau đó nó có vẻ hoạt động - Wolfgang Fahl
Bạn có thể cập nhật khóa thay vì xóa khóa đó. Sử dụng ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts sau đó bạn không cần phải xác minh khóa mới lúc đầu kết nối với máy chủ. - Alex
Đối với những người không thành công để làm cho nó hoạt động: Tôi đã đăng ký bội số lần xuất hiện của cùng một IP: 1 / địa chỉ IP đã nói (xx.xx.xx.xx), tên miền (tomsihap.fr), máy chủ vps được cung cấp của nhà cung cấp địa chỉ (vpsxxx.ovh.net). ssh-keygen -R cho mỗi trong số này đã làm việc. - tomsihap
Làm việc cho tôi, nhưng sự nhầm lẫn có thể là từ máy chủ nào mà lệnh này sẽ được chạy? Câu trả lời là từ câu trả lời có lỗi. Câu hỏi và câu trả lời thứ hai rõ ràng hơn, nhưng chỉ trong trường hợp: địa chỉ nào để chuyển sang ssh-keygen -R? Địa chỉ hiển thị trong báo cáo lỗi. - Russ Bateman


Trong trường hợp của tôi ssh-keygen -R ... không khắc phục được cảnh báo. Tôi có thêm thông tin như thế này:

Offending key for IP in /home/myuser/.ssh/known_hosts:8
Matching host key in /home/myuser/.ssh/known_hosts:24

Tôi chỉ cần chỉnh sửa thủ công ~/.ssh/known_hosts và đã xóa dòng 8 ("khóa vi phạm"). Tôi đã thử kết nối lại, máy chủ đã được thêm vào vĩnh viễn và mọi thứ đều ổn sau đó!


40
2018-03-11 18:52



Điều này làm việc cho tôi. Cảm ơn! - Organic Marble
Làm việc như một say mê. Có thể sửa lỗi này trong một dòng với sed -e '8d' /home/myuser/.ssh/known_hosts, thay thế số dòng 8 và tên tệp với tên được hiển thị trên hệ thống của bạn. - Alex P. Miller


Tôi thực hiện nhiều thao tác xung quanh giữa các máy tính LAN và hai tài khoản webhosting của mình, vì vậy tôi đã sắp xếp tất cả các loại tỷ lệ cược và kết thúc bằng SSH, bao gồm cả các vấn đề xác thực khi sử dụng ssh -v để xem nơi và những gì đã đi sai.

Vừa giải quyết vấn đề này và không hài lòng với câu trả lời, tôi thực sự muốn biết "tại sao" bản thân mình ...

Trình kích hoạt cho trường hợp của tôi là: đã cài đặt hệ điều hành máy chủ mới tại nơi làm việc và khi cài đặt gói openssh-server, một bộ khóa máy chủ mới đã được tạo trên máy chủ của công việc. Trước đây, tất cả các hệ điều hành máy chủ của tôi là Ubuntu và lần này nó đã thay đổi thành Debian (và tôi nghi ngờ có sự khác biệt về sắc thái về quyền).

Khi tất cả các hệ điều hành đã được Ubuntu và tôi cài đặt lại hệ điều hành của một máy chủ, khi SSH đầu tiên vào nó, tôi nhận được loại cảnh báo, mà tôi thích hơn cảnh báo im lặng ở trên!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
06:ea:f1:f8:db:75:5c:0c:af:15:d7:99:2d:ef:08:2a.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:4
RSA host key for domain.com has changed and you have requested strict checking.
Host key verification failed.

Sau đó, tôi mở ra ~ / .ssh / known_hosts trên máy tính khởi tạo ssh, xóa dòng đó, kết nối lại và điều này xảy ra:

chris@home ~ $ ssh work
The authenticity of host '[work]:11122 ([99.85.243.208]:11122)' can't be established.
ECDSA key fingerprint is 56:6d:13:be:fe:a0:29:ca:53:da:23:d6:1d:36:dd:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[work]:11122 ([99.85.243.208]:11122)' (ECDSA) to the list of known hosts.
Linux rock 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64

Đó là bit về: 11122 là số cổng tôi định tuyến SSH từ trên tường lửa

Tôi đã kiểm tra các bản sao lưu từ một máy chủ Ubuntu cũ và khác với bản cài đặt Debian mới của tôi:

Ubuntu:                                            Debian:
# Package generated configuration file             # Package generated configuration file
# See the sshd(8) manpage for details              # See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for      # What ports, IPs and protocols we listen for
Port 22                                            Port 22
# Use these options to restrict which interface    # Use these options to restrict which interfaces
#ListenAddress ::                                  #ListenAddress ::
#ListenAddress 0.0.0.0                             #ListenAddress 0.0.0.0
Protocol 2                                         Protocol 2
# HostKeys for protocol version 2                  # HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key                  HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key                  HostKey /etc/ssh/ssh_host_dsa_key
------------------------------------------------   HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security    #Privilege Separation is turned on for security
UsePrivilegeSeparation yes                         UsePrivilegeSeparation yes

Vì vậy, có, có khả năng, máy chủ đã bắt đầu sử dụng các khóa ecdsa gần đây, dựa trên những thay đổi của Ubuntu gần đây, tôi sẽ đổ lỗi cho một bản cập nhật. Sự thay đổi của Ubuntu từ hệ điều hành Linux vững chắc mà tôi đã tính là lý do tại sao tôi cài đặt Debian lần này.

tôi đọc một security.SE q / a trên ecdsa và đã xóa dòng đó khỏi sshd_config máy chủ Debian mới của tôi. (và chạy service ssh restart)


14
2018-01-16 08:12



+1 cho khối so sánh song song tốt đẹp. Bạn có thể thêm một URL làm rõ "Ubuntu chuyển từ hệ điều hành Linux vững chắc" có nghĩa là? - bgoodr
@ bgoodr đó là ý kiến ​​của tôi và chỉ dựa trên việc thiết lập máy chủ tập tin RAID của riêng tôi nhiều lần trong vài năm qua. : / Crap cho câu trả lời, nhưng bắt đầu googling ubuntu debian server và bạn sẽ thấy những gì tôi có ý nghĩa. - Chris K
@ Chris Bạn, thưa bạn, là một ông chủ. Cảm ơn câu trả lời chi tiết, nhưng súc tích. - sargas


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

Điều này sẽ thay thế các khóa hiện có trong known_hosts.old và tạo một khóa mới. Giải pháp này làm việc cho tôi trong cùng một kịch bản


5
2018-05-14 18:16





Lời nhắc xảy ra mọi lúc vì địa chỉ IP thay đổi mọi lúc khi sử dụng địa chỉ động. Hãy thử sử dụng IP tĩnh để bạn chỉ phải thêm khóa một lần.


4
2018-01-16 09:06



Tốt, tôi đã bỏ lỡ nơi ai đó đã đề cập đến ips động? - Chris K


Bạn có đang sử dụng cùng một người dùng để kết nối không?

Nếu bạn đã đăng nhập vào một máy tính cục bộ như người dùng John và kết nối với máy chủ B như người dùng Adolf @ B và mọi thứ đều ổn, nó không có nghĩa là mọi thứ đều ổn nếu bạn đăng nhập vào máy tính cục bộ như người dùng Jane và kết nối với máy chủ B như người dùng Adolf @ B.

Nếu bạn muốn đăng nhập trên máy chủ B như người dùng Beda từ PC A mà không cần mật khẩu, hãy thử lệnh này, tất cả từ PC A:

ssh-keygen -t rsa

Lệnh này tạo khóa và lưu khóa trong tệp. Xin hãy đi đi cụm từ mật khẩu trống.

ssh Beda@B mkdir -p .ssh

Lệnh này tạo thư mục, nếu chúng chưa tồn tại. Nếu không, không in thông báo lỗi.

cd ~/.ssh

Lệnh này thay đổi thư mục thành thư mục chủ người dùng của bạn ./ssh.

cat id_rsa.pub | ssh Beda@B 'cat >> .ssh/authorized_keys'

Lệnh này sẽ in tệp id_rsa.pub (khóa công khai của bạn) vào authorized_keys trên máy chủ.

QUAN TRỌNG: Beda là tên người dùng của bạn trên máy chủ mà bạn đang kết nối, B là IP máy chủ của bạn.

Bây giờ, bạn có thể kết nối với máy chủ B mà không cần mật khẩu hoặc cụm mật khẩu:

ssh Beda@B

2
2017-10-21 09:17



Hoặc chỉ cần sử dụng ssh-copy-id để điền một tập tin authorized_keys với khóa id_rsa.pub của bạn mà không có tất cả các rắc rối thêm. - BlakBat


Chủ đề đây có thể giúp.

Về cơ bản, bạn muốn xóa cả khóa RSA và ECDSA cho máy chủ lưu trữ đó, sau đó sử dụng ssh-keyscan để đưa chúng trở lại known_hosts tệp theo cách không gây ra xung đột này. Nó làm việc cho tôi khi tôi có cùng một vấn đề.


1
2017-12-20 16:47





Câu hỏi: Điều gì gây ra điều này, ...?

Vì vậy, khóa máy chủ máy chủ ssh đã thay đổi. Điều gì gây ra sự thay đổi? Thật khó để nói. Dưới đây là một số dự đoán:

  • Có phải sshd trên máy chủ của tôi bắt đầu sử dụng các khóa ECDSA, vì vậy nó là một loại khóa mới?
  • Máy chủ của tôi có được cài đặt lại gần đây không?
  • Có phải sshd trên máy chủ của tôi gần đây đã bị mất tích lại do đó, một khóa máy chủ ssh mới đã được tạo ra chưa?
  • Có ai đó tạo lại hoặc thay thế khóa máy chủ sshd không?
  • Địa chỉ IP của máy chủ của tôi có thay đổi sao cho một máy chủ khác đang trả lời địa chỉ IP đó không?

Câu hỏi: ... và làm thế nào để sửa chữa nó?

Khi những người khác đã trả lời, hãy xóa khóa máy chủ lưu trữ ECDSA đã lưu trong bộ nhớ cache cho máy chủ của tôi mà tài khoản của bạn đã được lưu trong bộ nhớ cache.


1
2017-08-07 15:42



Lời khuyên tốt, nhưng không thực sự trả lời câu hỏi. Thậm chí không TRY để trả lời câu hỏi. - boatcoder


Lỗi này khiến tôi khó chịu trong một thời gian dài. Vì một lý do nào đó nó tạo ra sự khác biệt cho dù tôi sẽ làm

ssh host

hoặc là

ssh host.domain

https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh

sau đó chỉ cho tôi tùy chọn thay đổi tệp cấu hình. Xem tập lệnh của tôi https://askubuntu.com/a/949731/129227 để tự động hóa quy trình.


1
2017-08-25 12:43





Tôi đã khắc phục sự cố này trên Chromebook bằng cách gỡ cài đặt và cài đặt lại Shell bảo mật ... Nó hoạt động như một sự quyến rũ.


0
2018-05-18 23:26



Đây là quá mức cần thiết. Xem một giải pháp đơn giản trong câu trả lời của tôi ở đây. - Alex Yursha


Dưới đây là cách xóa dấu vân tay máy chủ lưu trữ đã biết (từ known_hosts tệp) trên Chrome OS:

Tìm chỉ mục của mục nhập máy chủ vi phạm trong đầu ra ssh khi kết nối không thành công. Ví dụ: trong chỉ mục vi phạm dưới đây là 7:

Offending ECDSA key in /.ssh/known_hosts:7

Mở bảng điều khiển JavaScript (CTRL+Shift+J) của cửa sổ Secure Shell và nhập thông tin sau, thay thế INDEX với giá trị thích hợp (ví dụ: 7):

term_.command.removeKnownHostByIndex(INDEX);

Giải pháp này được mượn từ Blog của Leo Gaggl.


0
2017-07-24 07:55