2012-04-08 24 views

Trả lời

76

Chờ đã, tôi đã tìm thấy. Chạy lệnh:

ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub 
+3

Lưu ý rằng điều này sẽ tính toán giá trị băm của vân tay ở định dạng ưa thích của os máy chủ của bạn. Tùy thuộc vào hệ điều hành cục bộ của bạn, bạn có thể cần sử dụng định dạng băm cũ: ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub Điều này là cần thiết, ví dụ khi kết nối từ ubuntu 12.04 đến ubuntu 16.04 – Jeff

11

Với ssh gần đây (OpenSSH_6.0p1, OpenSSL 1.0.0j 10 Tháng Năm 2012), tôi viết kịch bản nó như thế này:

ssh-keyscan -t ecdsa localhost 2>&1 | grep ecdsa 
localhost ecdsa-sha2-nistp256 AAAAE2VlongKey...= 

Ghi chú:

  • nếu sshd của bạn chạy trên một cổng tùy chỉnh, hãy thêm '-p portNumber' vào lệnh ssh-keyscan)
  • ssh-keyscan viết trên stderr, không stdout (!), vì thế mà chuyển hướng bash '2>&1' (có thể thay đổi tùy theo shell của bạn)

Đó là dòng tôi thêm vào tập tin ~/.ssh/known_hosts của tôi để cho phép các yêu cầu ssh từ localhost cho thử nghiệm của tôi (chủ yếu cho gitolite, which uses ssh).


Daniel Böhmer khẳng in the comments:

  • ssh-keyscan cung cấp các khóa công khai đầy đủ (s) của máy chủ SSH
  • đầu ra của ssh-keygen gần giống với định dạng của các tập tin khóa công khai .
    Chỉ cần loại bỏ cột thứ nhất (địa chỉ IP hoặc tên máy chủ) và lưu nó hoặc ống nó vào ssh-keygen -l trình bày dấu vân tay.
+1

câu hỏi là về dấu vân tay * của khóa. ssh-keyscan chỉ cung cấp khóa (công khai). – aleb

+0

Thật vậy, 'ssh-keyscan' cung cấp toàn bộ khóa công khai của máy chủ SSH. Tôi có một kết xuất của nó và bây giờ muốn so sánh với dấu vân tay được hiển thị bởi 'ssh' trong lần kết nối đầu tiên. Làm thế nào để làm điều đó? –

+0

Tôi vừa phát hiện ra: đầu ra của 'ssh-keygen' gần giống với định dạng của các tệp khóa công khai. Chỉ cần loại bỏ cột thứ nhất (địa chỉ IP hoặc tên máy chủ) và lưu nó hoặc đặt nó vào 'ssh-keygen -l' trình bày dấu vân tay. Tôi vẫn muốn biết làm thế nào để làm cho 'ssh' hiển thị toàn bộ khóa công khai của máy chủ khi yêu cầu xác nhận nó. –

5

Trên hệ thống của tôi, tôi cần phải xác định một chìa khóa MD5 thay cho SHA256 mặc định:

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub 

đầu ra này một chuỗi trong một định dạng mà xuất hiện lỗi tôi thấy trên máy khách.

+1

Cờ '-E' được giới thiệu trong OpenSSH> 6.6, khoảng thời gian khi chuyển sang dấu vân tay SHA256 theo mặc định.Vì vậy, trong trường hợp máy khách hiển thị dấu vân tay SHA256, nó không thể được sử dụng để xuất ra định dạng đó trên máy chủ. Một cách xung quanh đó: https://superuser.com/a/1030779 – tanius