Làm cách nào tôi có thể tránh xác minh máy chủ của SSH cho các máy chủ đã biết?


169

Tôi nhận được lời nhắc sau mỗi lần tôi cố gắng kết nối máy chủ bằng SSH. Tôi gõ "có", nhưng có cách nào để giải quyết vấn đề này không?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 

7
/ dev / null tồn tại cho những người nghĩ rằng họ miễn dịch với con người trong các cuộc tấn công ở giữa :)
Tim Post

1
Phần tồi tệ nhất: yPlease type 'yes' or 'no':
Nhập

Câu trả lời:


234

Sử dụng -otùy chọn,

ssh -o "StrictHostKeyChecking no" user@host

1
Bạn có thể muốn sử dụng tệp nhận dạng thay thế bằng cờ '-i'
MUY Bỉ

Việc sử dụng một tập tin nhận dạng thay thế là gì? Ý tôi là, nếu bạn đang kết nối với một máy chủ bị xâm nhập, thì sự khác biệt sẽ làm cho cách bạn xác thực - không giống như máy chủ bị xâm nhập cũng có thể đánh cắp khóa của bạn.
Dagelf

102

Thêm các dòng sau vào đầu /etc/ssh/ssh_config...

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Tùy chọn:

  • Mạng con Máy chủ có thể *cho phép truy cập không hạn chế vào tất cả các IP.
  • Chỉnh sửa /etc/ssh/ssh_configcho cấu hình toàn cầu hoặc ~/.ssh/configcho cấu hình dành riêng cho người dùng.

Xem http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


2
Đáng tiếc tôi chỉ có thể nâng đỡ bạn một lần. Đặt Knownhost thành / dev / null là thiên tài.
J0hnG4lt

1
Của bạn thông minh nhất.
Darth Egregious

30
Hà! Nói với vợ tôi.
JimFred

30

Bạn chỉ nên nhận được điều này khi lần đầu tiên kết nối với máy chủ mới. Sau khi bạn trả lời yes, máy chủ sẽ được lưu trữ ~/.ssh/known_hostsvà bạn sẽ không được nhắc lại vào lần kết nối tiếp theo.

Lưu ý rằng nếu ~/.ssh/known_hostskhông thể được viết vì bất kỳ lý do nào (ví dụ: vấn đề về quyền) thì bạn sẽ được nhắc mỗi khi kết nối.


7
Câu hỏi là có cách nào để tránh lời nhắc?
shantanuo

Tôi đã thử thêm "CheckhostIP no" vào tập tin / etc / ssh / ssh_config. Nhưng nó dường như không hoạt động
shantanuo

2
sudo chown -R user: user .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ tên máy chủ và kết nối lại sẽ loại bỏ TẤT CẢ các vấn đề và CHỈ nhắc lại nếu ssk_hostkey bị lừa với | đã thay đổi hoặc bạn là nạn nhân của MITM.
linuxdev2013

1
nó nói "mọi lúc" vì vậy câu trả lời này là siêu phù hợp
tarikakyol

11

Cách tốt nhất (vì không hy sinh bảo mật) là kết nối một lần với tất cả các máy tính từ một khách hàng (bạn sẽ được nhắc mọi lúc, luôn trả lời có). Như đã chỉ ra trong câu trả lời khác, các khóa sau đó sẽ được lưu trữ trong ~ / .ssh / unknown_hosts. Sau đó sao chép tệp này vào mọi máy tính khách mà sau này bạn có thể muốn kết nối (có thể cho mỗi tài khoản người dùng bạn sử dụng). Sau đó, tất cả các tài khoản này sẽ "biết" các máy tính, do đó không có dấu nhắc.

Ưu điểm so với việc vô hiệu hóa lời nhắc là SSH thực sự có thể kiểm tra xem có cuộc tấn công MITM nào không.


1
Mặc dù, nếu bạn thường xuyên ssh qua các kết nối chuyển tiếp, bạn sẽ muốn thêm phần này vào / etc / ssh / ssh_config: Host 127.0.0.1 NohostAuthenticationForLocalhost có
Dagelf

1

Nếu bạn muốn tắt xác nhận, thay vì xác thực, bạn có thể sử dụng tùy chọn: "-o CheckhostIP = no"

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8

OP đã có câu trả lời tương tự và chấp nhận nó.
Ayan

0

Điều này có thể là do máy chủ khóa ssh của bạn đã thay đổi, vì ip hoặc tên miền của máy chủ giống nhau nhưng khóa ssh không khớp.

Bạn phải loại bỏ khóa được lưu trữ /home/$user/.ssh/known_hostsđể tránh thông báo này.

Tôi đã sửa nó xóa tất cả các khóa trong tệp đó, vì vậy mã thông báo mới được tạo cho tên miền này.


1
Khóa thay đổi tạo ra một thông điệp xấu hơn nhiều với một hộp atsigns WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!trong tất cả các chữ hoa. Thông điệp trong câu hỏi chỉ xảy ra nếu chưa có mục nhập known_hosts.
dave_thndry_085

-1

Kiểm tra các quyền trên ~/.ssh/known_hoststập tin của bạn . Của tôi là không chính xác khi tôi gặp vấn đề này. Tôi đã sửa nó bằng:

chmod 0600 ~/.ssh/known_hosts
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.