lấy dấu vân tay SSH ở định dạng hex (cũ) trên phiên bản mới của openssh


40

Có vẻ như openssh đã thay đổi cách hiển thị dấu vân tay quan trọng.

Tôi đang cố gắng ssh từ máy khách đến máy chủ:

  • máy khách: Ubuntu 14.04 chạy OpenSSH 6.6.1
  • máy chủ: FreeBSD chạy OpenSSH 7.2p2.

Máy khách báo cáo băm md5 của khóa máy chủ dưới dạng một chuỗi gồm 16 cặp chữ số hex, như sau:

a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

Máy chủ mặc định sử dụng hàm băm sha256, nhưng nhờ câu trả lời này, tôi có thể buộc nó cung cấp hàm băm sha1 bằng cách chạy:

[root@host /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_host_ecdsa_key.pub

Tôi muốn kết quả trông như thế này:

a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

nhưng thay vào đó tôi nhận được điều này:

256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI root@host.local (ECDSA)

Đối với tôi, có vẻ như một phiên bản mã hóa cơ sở của dấu vân tay hiện đang được hiển thị thay vì chữ số hex.

Làm cách nào tôi có thể lấy tổng kiểm tra của khóa máy chủ theo cùng định dạng như báo cáo của máy khách (cũ hơn) (chữ số hex được phân tách bằng dấu hai chấm, hàm băm sha1) để kiểm tra xem chúng có giống nhau không?

EDIT: Phiên bản cũ của SSH cung cấp cho tổng kiểm tra md5 chứ không phải tổng kiểm tra sha1 như tôi nghĩ nhầm. Sử dụng tổng kiểm tra đó (như câu trả lời hiện được chấp nhận) trong tùy chọn -E sẽ cho đầu ra mong muốn.

Câu trả lời:


52

Máy khách báo cáo hàm băm sha1 của khóa máy chủ dưới dạng một chuỗi gồm 16 cặp chữ số hex, như sau:

    a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

Đây là hàm băm MD5.

Như bạn có thể thấy đang chạy

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

sẽ giúp bạn có được dấu vân tay giống như bạn cần mà không cần harakiri như vậy bạn đang giải thích trong câu trả lời của mình.


1
Thật không may, điều này không hoạt động. Câu hỏi của tôi chứa kết quả của việc chạy lệnh được đề xuất của bạn. Các phiên bản mới hơn của ssh-keygen cung cấp hàm băm md5 dưới dạng chuỗi (mã hóa base64?) Thay vì chuỗi hex. "Tất cả những gì harakiri" (một mô tả thích hợp!) Là cách dễ nhất tôi có thể tìm thấy để có được một chuỗi hex kiểu cũ từ phiên bản mới của công cụ openssh.
ngẫu nhiên

Trừ khi FreeBSD phá vỡ một cái gì đó (hoặc loại bỏ hỗ trợ MD5), không có lý do gì nó không hoạt động. Lưu ý rằng lệnh của bạn liệt kê sai sha1thay vì md5! Tôi đã lỗi thời với phiên bản Ubuntu với openssh-6.9, nhưng nó hoạt động tốt.
Jakuje

1
md5 thay vì sha1 ... không chắc là tôi đã bỏ lỡ điều đó như thế nào. Điều đó thực sự cho đầu ra phù hợp.
ngẫu nhiên

Tôi có vấn đề ngược lại. Tôi có md5 và muốn định dạng khác. Làm sao để tôi có được nó?
Gabriel Staples

1
Hoạt động khi lệnh được thực thi trên Ubuntu. Không hoạt động khi lệnh được thực thi trên centos.
Marinos An

5

Hóa ra, SSH Cookbook có cách tạo khóa thủ công ở định dạng hex cũ hơn. Tôi đã sử dụng điều này trên máy chủ freebsd.

awk '{in $ 2}' key.pub | cơ sở64 -d | md5 | sed / s /../&:/ g; s / :. * $ // '

Phá vỡ điều này:

awk '{in $ 2}' key.pub

in ra cột thứ hai (ngăn cách không gian) trong "key.pub", chính là khóa

cơ sở64 -d

khóa được mã hóa base64. Điều này sẽ xuất ra các byte thực tế của khóa

md5

đây là tương đương với 'md5sum -b' của freebsd đã được chỉ định trong công thức trên trang sách nấu ăn ssh

sed / s /../&:/ g; s / :. * $ // '

Có hai lệnh sed ở đây:

s /../&:/ g;

thay thế mọi cặp ký tự trên dòng (nhờ cờ 'g' ở cuối) bằng cùng một cặp theo sau là dấu hai chấm

s / :. * $ // '

loại bỏ bất kỳ dấu hai chấm (thay thế một dấu hai chấm theo sau là khoảng trắng theo sau là bất cứ thứ gì cho đến cuối dòng không có gì).


4

Trong những trường hợp như thế này, tôi sử dụng tập lệnh nhỏ sau đây (đã thử nghiệm trên Debian và Ubuntu):

#!/bin/sh

# Gather the public ssh host keys for the given host
# and for each key print the fingerprint in hex format using the given
# checksum command (e.g. md5sum, sha256sum, ...)

if [ "$#" != 2 ]; then
  echo "usage: $0 hostname checksum_command"
  exit 1
fi

ssh-keyscan $1 2>/dev/null | while read -r line; do
  echo "Scanned key:"
  echo $line
  echo "$2 fingerprint:"
  echo $line | awk '{print $3}' | base64 -d | $2 -b | awk '{print $1}' | sed 's/../&:/g' | sed 's/:$//'
  echo
done

Ví dụ sử dụng:

$ myscript host.example.com md5sum
Scanned key:
host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
md5sum fingerprint:
6c:ef:26:f7:98:ad:ed:5b:cc:ff:83:13:46:c9:f6:79

Scanned key:
host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
md5sum fingerprint:
b2:9c:cd:30:b1:38:e3:d1:17:d6:73:eb:03:9a:80:83

$ myscript host.example.com sha256sum
Scanned key:
host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
sha256sum fingerprint:
f4:61:58:e4:90:65:c4:70:98:7f:d1:40:0a:d8:d9:79:14:e6:91:dc:b6:ed:91:8c:c0:df:d9:65:db:dd:a0:18

Scanned key:
host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
sha256sum fingerprint:
4b:73:d1:d7:80:87:46:64:56:71:64:10:7a:66:83:9b:c7:58:39:0b:16:74:dd:9b:d9:4b:e5:d5:61:7e:99:45
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.