Public key for SSH over the internet differs from a key for SSH over the LAN
The weird thing is that I get a different key when accessing the Pi over the internet instead of via LAN:
Manual page for
sshd describes format of your
SSH_KNOWN_HOSTS FILE FORMAT
Each line in these files contains the following fields: markers (optional), hostnames, [...]. The fields are separated by spaces.
Se we got to the first answer. The first field is
hostname, which is obviously different when you connect from outside or from inside, as proposed in your question.
Further we can read
Alternately, hostnames may be stored in a hashed form which hides host names and addresses should the file's contents be disclosed. Hashed hostnames start with a ‘|’ character. Only one hashed hostname may appear on a single line [...]
Yes, your hostnames/ip addresses are hashed.
But when I ssh into my Pi and execute the same command [...]
The new versions are using SHA-256 hashes instead of the obsolete MD5. You can force the new version to generate you the old fingerprint using:
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
Conversion between these two formats are possible, but not useful. Using
ssh-keygen directly as I proposed above is advised solution.
You can generate fingerprint from public key stored in your
known_hosts file somehow like this:
ssh-keygen -l -f <( ssh-keygen -H -F 192.168.1.92 | tail -n 1 | cut -d" " -f 2,3)