Skip to content

Instantly share code, notes, and snippets.

@mnuessler
Created March 10, 2016 11:56
Show Gist options
  • Save mnuessler/e7348c5a2611485a3883 to your computer and use it in GitHub Desktop.
Save mnuessler/e7348c5a2611485a3883 to your computer and use it in GitHub Desktop.
Host SSH key fingerprints for all key ciphers
#!/bin/bash
# Not my own creation, copied from:
# http://superuser.com/questions/929566/sha256-ssh-fingerprint-given-by-the-client-but-only-md5-fingerprint-known-for-se
# standard sshd config path
SSHD_CONFIG=/etc/ssh/sshd_config
# helper functions
function tablize {
awk '{printf("| %-7s | %-7s | %-47s |\n", $1, $2, $3)}'
}
LINE="+---------+---------+-------------------------------------------------+"
# header
echo $LINE
echo "Cipher" "Algo" "Fingerprint" | tablize
echo $LINE
# fingerprints
for host_key in $(awk '/^HostKey/ {sub(/^HostKey\s+/,"");print $0".pub"};' $SSHD_CONFIG); do
cipher=$(echo $host_key | sed -r 's/^.*ssh_host_([^_]+)_key\.pub$/\1/'| tr '[a-z]' '[A-Z]')
if [[ -f "$host_key" ]]; then
md5=$(ssh-keygen -l -f $host_key | awk '{print $2}')
sha256=$(awk '{print $2}' $host_key | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64)
echo $cipher MD5 $md5 | tablize
echo $cipher SHA-256 $sha256 | tablize
echo $LINE
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment