Làm cách nào để tôi bỏ qua câu hỏi nổi tiếng về mối quan hệ của người dùng trong lần đầu tiên tôi kết nối với máy qua SSH bằng các khóa công khai / riêng tư? [bản sao]


16

Làm cách nào để tôi bỏ qua câu hỏi "know_host" lần đầu tiên tôi kết nối với máy qua SSH bằng khóa chung / riêng?


Tại sao điều này được đánh dấu là trùng lặp khi nó trước câu hỏi khác?
Jason Axelson

Câu trả lời:


31

Tất cả các câu trả lời hiện tại khác đều thiếu UserKnownhostsFile = / dev / null

Nếu bạn chỉ muốn làm điều đó một lần, bạn có thể sử dụng:

ssh -o StrictHostKeychecking=no hostname

Nếu bạn muốn làm điều đó nhiều lần, bạn nên thêm một cái gì đó như sau vào ~ / .ssh / config của bạn

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

Để cấu hình điều này trên OpenSSH cho Windows, chỉ cần thay thế /dev/nullbằng NUL.

Giải thích tốt từ: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


2
Tôi đã săn lùng để lọc ra một mạng con trong nhiều tháng (không chủ động), đây chính xác là những gì tôi muốn. Chúng tôi có một mạng lưới phát triển nhỏ với dhcp và các thiết bị của chúng tôi luôn nhận được địa chỉ IP mới, điều này giúp việc kết nối với chúng trở nên dễ dàng hơn. Cảm ơn!
Adam Lewis

13

Tắt StrictHostKeyCheckingthông qua ssh_confighoặc tùy chọn dòng lệnh.


/ etc / ssh / ssh_config hoặc ~ / .ssh / config --- hoặc bất cứ thứ gì tương đương trên windows nếu đó là nền tảng máy khách của bạn
Doug Harris

3

Bạn có thể lấy khóa công khai, thêm nó vào tệp know_hosts và sau đó thử lại:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts
ssh-keygen -H
rm .ssh/known_hosts.old

2
$ ssh -o StrictHostKeychecking=no hostname

Điều này sẽ khiến séc bị bỏ qua và khóa của máy chủ từ xa sẽ tự động được thêm vào lần đăng nhập đầu tiên. (Ngoài ra còn có tùy chọn CheckhostIP, nhưng dường như nó không thực sự vô hiệu hóa việc kiểm tra xem liệu có tồn tại một khóa hay không).


2
Tôi cũng thích sử dụng UserKnownhostsFile để chữ ký không được ghi nhớ trên hệ thống của tôi. Một mẹo hay:ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeychecking=no hostname
metavida

2

Điều này làm tôi mất một lúc để tìm. Usecase phổ biến nhất tôi từng thấy là khi bạn có đường hầm ssh đến các mạng từ xa. Tất cả các giải pháp ở đây tạo ra các cảnh báo đã phá vỡ các tập lệnh của tôi (nagios).

Tùy chọn tôi cần là:

NoHostAuthenticationForLocalhost yes

Mà, như tên cho thấy cũng chỉ áp dụng cho localhost.


0

Bạn có thể vô hiệu hóa việc kiểm tra, nhưng tất nhiên là kém an toàn hơn. Trong một tình huống lý tưởng, điều bạn nên làm là nhờ ai đó đã có quyền truy cập vào máy để lấy khóa máy chủ công cộng và bảo ssh sử dụng nó. tức là: lấy đầu ra của:

cat /etc/ssh/ssh_host_rsa_key.pub

thêm tên máy chủ của máy và thêm dòng đó vào tệp ~ / .ssh / unknown_hosts trên máy của bạn. Bạn sẽ kết thúc với một cái gì đó trông giống như:

myhost.example.com ssh-rsa AAAAB3Netc ...

Cách khác, nếu bạn chỉ muốn lấy dấu vân tay của phím, có thể dễ dàng chuyển qua kênh băng thông hạn chế (như cuộc gọi điện thoại), bạn có thể chạy trợ giúp của mình:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

0

Nếu bạn chỉ muốn tạm thời vô hiệu hóa kiểm tra máy chủ, vì vậy bạn có thể đăng nhập vào hệ thống LiveCD, đổi tên ~/.ssh/known_hoststhành một thứ khác, sau đó thay đổi lại khi bạn hoàn thành.


-2
  1. Thêm "StricthostKeyChecking no" vào / etc / ssh / ssh_config
  2. cd ~ / .ssh
  3. rm know_hosts
  4. ln -s / dev / null know_hosts

Chơi lô tô


1
Bạn có biết loại tấn công nào mà câu hỏi này được cho là để ngăn chặn không?
vonbrand
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.