Nhận dạng máy chủ Remote Remote đã thay đổi cảnh báo của Mt khi kết nối qua SSH


21

Tôi đã nhận được thông báo này ngày hôm nay khi cố gắng đăng nhập vào máy chủ của tôi. Tôi nên làm gì? Chuyện gì đang xảy ra vậy?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.

2
Bên cạnh đó, bạn có thể muốn tránh đăng nhập cục bộ và từ xa bằng root, và thay vào đó sử dụng người dùng không có đặc quyền kết hợp với sudo.
Steve Beattie

Câu trả lời:


12

Gần đây bạn đã cài đặt lại hệ điều hành trên máy chủ của bạn hay bất cứ thứ gì tương tự? Điều đó sẽ gây ra điều này.

Để khắc phục điều này: http://www.cyberciti.biz/faq/warning-remote-host-identifying-has-changed-error-and-solution/

Giải pháp số 1: Xóa khóa bằng ssh-keygen

Sử dụng -Rtùy chọn để xóa tất cả các khóa thuộc tên máy chủ khỏi tệp đã biết. Tùy chọn này rất hữu ích để xóa các máy chủ băm. Nếu tên máy chủ từ xa của bạn là server.example.com, hãy nhập:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

Bây giờ, bạn có thể kết nối với máy chủ mà không gặp vấn đề gì.

Giải pháp số 2: Thêm khóa máy chủ chính xác vào /home/user/.ssh/known_hosts

Không cần thiết phải xóa toàn bộ tệp know_hosts, chỉ là dòng vi phạm trong tệp đó. Ví dụ nếu bạn có 3 máy chủ như sau.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

Để xóa máy chủ thứ 2 (myserver.com), hãy mở tệp:

# vi +2 .ssh/known_hosts

Và nhấn lệnh dd để xóa dòng. Lưu và đóng tập tin. Hoặc sử dụng sau đây

$ vi ~/.ssh/known_hosts

Bây giờ đi đến dòng # 2, gõ lệnh sau

:2

Bây giờ xóa dòng với dd và thoát:

dd
:wq

Hoặc bạn có thể sử dụng lệnh sed như sau để xóa khóa vi phạm tại dòng # 44:

$ sed -i 44d ~/.ssh/known_hosts

Giải pháp 3: Chỉ cần xóa tệp know_hosts Nếu bạn chỉ có một máy chủ ssh

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Hãy thử kết nối lại với ssh
Bây giờ bạn sẽ có thể kết nối máy chủ của mình qua ssh:

ssh username@server-ip-here
ssh nixcraft@server1.cyberciti.biz

Tiếp theo, bạn sẽ nhận được một lời nhắc mới để thêm khóa vào ~/.ssh/known_hostsnhư sau:

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.

9
Lưu ý rằng nếu bạn KHÔNG thay đổi khóa máy chủ SSH của máy chủ, bạn không nên thay thế bản sao của khóa máy chủ, vì đó có thể là dấu hiệu cho thấy ai đó đang cố gắng phá vỡ liên lạc của bạn bằng cách thực hiện một cuộc tấn công trung gian.
Kees Cook

7

Từ những gì tôi có thể nói, tất cả những câu trả lời này là về việc ngăn chặn cảnh báo, thay vì xử lý nó. Nói tóm lại, cảnh báo cho bạn biết rằng máy chủ không giống như trước đây; xem https://en.wikipedia.org/wiki/Man_in_the_middle_attack để biết tại sao điều này có thể là một mối nguy hiểm.

Đọc man ssh, đặc biệt là phần này:

XÁC MINH CÁC KHOẢN KHÓA

Khi kết nối với máy chủ lần đầu tiên, dấu vân tay của khóa chung của máy chủ sẽ được hiển thị cho người dùng (trừ khi tùy chọn StricthostKeyChecking đã bị tắt). Dấu vân tay có thể được xác định bằng ssh-keygen (1) :

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

Để đảm bảo an toàn, bạn (hoặc ai đó bạn tin tưởng) nên chạy lệnh này trước trên máy chủ bạn đang kết nối. Nó sẽ cung cấp cho bạn một dấu vân tay trông giống như được đưa ra trong cảnh báo trong câu hỏi. Tất nhiên, thường thì bạn không có thông tin này, nhưng nếu bạn có lý do để nghi ngờ điều gì đó xảy ra, chạy lệnh đó là cách để kiểm tra xem chữ ký máy chủ có thực sự thay đổi hay không, hoặc có thể có điều gì đó đáng ngờ đang xảy ra.


1
Sử dụng điều này nếu máy chủ của bạn cung cấp dấu vân tay sha256 thay vì băm md5. ssh -o FingerprintHash=md5 example.org
Declan McKenna

1
Thông tin thêm về FingerprintHash: superuser.com/questions/929566/ ((ví dụ: sha256 nên được ưu tiên, nhưng bạn có thể không biết giá trị đó nếu bạn chưa nâng cấp đủ gần đây)
unhammer

2

Tôi đã đối mặt với cùng một vấn đề và nếu bạn không muốn xóa toàn bộ known_hoststệp, bạn có thể thực hiện lệnh sau:

ssh-keygen -R 10.10.10.69

Không có vấn đề gì với việc xóa know_hosts. Bạn sẽ chỉ phải thêm từng máy chủ mà bạn kết nối vào danh sách mỗi khi bạn kết nối với chúng. Có thể làm hỏng kịch bản của bạn quá, bởi vì các máy chủ chưa được tin cậy. Cảnh báo xảy ra khi chữ ký của máy chủ (máy tính bạn đang cố gắng kết nối với các khóa mới được tạo, thường là do cài đặt lại hoặc xoay phím.)


0

Nếu bạn tin rằng cảnh báo là dương tính giả, bạn có thể xóa / root / ssh / unknown_hosts để bắt đầu xác minh mới.


3
Xin đừng làm điều này, bạn sẽ mất các máy chủ được biết đến khác. Thay vào đó, nếu bạn chắc chắn đó là dương tính giả thì hãy xóa dòng cụ thể: "know_hosts: 8" dòng 8 trong trường hợp này.
Roger Light

0

Nếu gần đây bạn đã cài đặt lại máy chủ hoặc thay đổi khóa máy chủ, có thể xóa dòng 8 khỏi tệp ~ / .ssh / know_hosts của bạn và thêm lại máy chủ (bằng cách ssh'ing vào nó và trả lời "có "khi nó yêu cầu xác minh chính)


0

Vì máy chủ của bạn nằm trên một mạng cục bộ, bạn có thể khá tự tin.

Nếu bạn đã cài đặt lại hệ thống của mình, điều này là bình thường, nhưng thay vì xóa tệp know_hosts của bạn, tôi khuyên bạn nên làm echo "" > ~/.ssh/known_hosts


Mọi người vẫn có thể chơi các thủ thuật trên một mạng cục bộ. Mạng lưới kinh doanh hoặc trường học có thể có rất nhiều chỗ cho việc không đáng tin cậy.
Azendale


0

Sao chép dòng này, nhưng đặt tên người dùng và tên máy chủ / IP cho userremote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

Ví dụ:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

Và dán nó vào thiết bị đầu cuối địa phương của bạn và chạy nó. Điều này làm việc cho tôi.


0

Trên nút máy khách nơi bạn đang phát hành ssh,

vi ~/.ssh/known_hosts

Xóa tất cả các dòng bắt đầu bằng địa chỉ IP trên cùng một mạng với IP mà bạn đang cố gắng ssh vào. Điều này sẽ buộc nút máy khách thêm vĩnh viễn (ECDSA) vào danh sách các máy chủ đã biết.

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.