Это для удобства, со страницы руководства ssh-keygen
в Debian:
Для ключей RSA1 также имеется поле комментария в файле ключей, которое только для удобства пользователя помогает идентифицировать ключ. Комментарий может сказать, для чего нужен ключ, или что-то полезное. При инициализации ключа комментарий инициализируется как «user @ host», но его можно изменить с помощью параметра -c.
Я думаю, что самое близкое, что вы получите для определения того, какой ключ использовался для входа, это ssh-add
, с -L, со страницы руководства:
-L Перечисляет параметры открытого ключа всех идентификаторов, представленных в настоящее время агентом.
Вы можете увеличить уровень регистрации демона ssh до DEBUG1:
LogLevel DEBUG1
И журнал покажет отпечаток RSA ключа SSH, используемого для входа в систему:
Aug 13 08:52:56 ubuntu_test sshd[17115]: debug1: matching key found: file /home/username/.ssh/authorized_keys, line 1
Aug 13 08:52:56 ubuntu_test sshd[17115]: Found matching RSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Вы можете получить отпечаток ключа с помощью ssh-keygen
:
-l Показать отпечаток указанного файла открытого ключа. Частные ключи RSA1 также поддерживаются. Для ключей RSA и DSA ssh-keygen пытается найти соответствующий файл открытого ключа и печатает свой отпечаток пальца.
В сочетании с -v, ASCII-изображение ключа предоставляется вместе с отпечатком пальца.
Из файла авторизованных ключей вам придется разделить каждую строку на новый файл для чтения с помощью ssh-keygen -l
. Вот пример сценария Ruby, который сделает это:
#!/usr/bin/env ruby
File.open("/home/username/.ssh/authorized_keys").each do |l|
file_name = l.split(" ")[2]
key_file = File.new("#{file_name}.pub_key", "w")
key_file.puts l
key_file.close
puts %x{ssh-keygen -l -f #{file_name}.pub_key}
end