Difference between revisions of "*nix, obtener la huella digital para SSH localmente"

From Wiki de Caballero
Jump to navigation Jump to search
Line 1: Line 1:
==Simple==
Al momento de logearse con SSH se da información de la huella digital del servidor ("Fingerprint for the ED25519 key" como especificado por Cyberduck).
Al momento de logearse con SSH se da información de la huella digital del servidor ("Fingerprint for the ED25519 key" como especificado por Cyberduck).


Line 8: Line 9:
# Opción 2: muestra resultado en md5, este resultado sirve en Cyberduck
# Opción 2: muestra resultado en md5, este resultado sirve en Cyberduck
for f in /etc/ssh/ssh_host_*_key; do ssh-keygen -l -E md5 -f "$f"; done
for f in /etc/ssh/ssh_host_*_key; do ssh-keygen -l -E md5 -f "$f"; done
</source>
==Script==
<source lang="bash">
#!/bin/bash
# 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
</source>
</source>



Revision as of 20:53, 5 November 2019

Simple

Al momento de logearse con SSH se da información de la huella digital del servidor ("Fingerprint for the ED25519 key" como especificado por Cyberduck).

Para obtener las claves locales se puede ejecutar (comandos probados en Ubuntu 16.04 LTS):

# Opción 1: muestra resultado en SHA256
for f in /etc/ssh/ssh_host_*_key; do ssh-keygen -l -f "$f"; done

# Opción 2: muestra resultado en md5, este resultado sirve en Cyberduck
for f in /etc/ssh/ssh_host_*_key; do ssh-keygen -l -E md5 -f "$f"; done

Script

#!/bin/bash

# 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