Редактировать: Что мне действительно нужно знать, КАКОЙ ключ ssh от авторизованного ключа используется для идентификации в настоящее время вошел в систему пользователя.
По словам "man sshd":
Protocol 2 public key consist of options, keytype, base64-encoded key, comment.
Я вижу, что когда я использую ssh-keygen, комментарием обычно является локальная идентификация пользователя. Есть ли способ получить доступ к этому значению, когда я на удаленном компьютере? (Вроде как переменная оболочки SSH_CLIENT)
(Предполагая, что я ввожу комментарий в качестве удаленного идентификатора, я хотел бы записать это из сценария оболочки!
Ответы:
Лично я бы не рекомендую это решение, но выкладываю это ради обсуждения.
Если вы готовы:
Вы можете установить «LogLevel DEBUG» в sshd_config, чтобы получать следующие записи каждый раз, когда ключ ssh успешно используется для аутентификации:
Написание сценария для анализа журналов и получения соответствующей информации будет тривиальным. Возможно, вы могли бы использовать grep для «sshd [$ PPID]», чтобы уменьшить количество строк, которые должен выполнить скрипт.
Обратите внимание, что изменение уровня журнала на DEBUG значительно увеличит размер ваших журналов и может нарушить конфиденциальность пользователей. Из "man sshd_config":
Я уверен, что есть несколько шагов, которые можно предпринять, чтобы сделать это решение немного менее страшным (например, запись информации sshd DEBUG в другой файл и контроль доступа к этому файлу и сценарию), но в конце дня, когда он все еще будет делать вы съеживаетесь
источник
Это поможет, если вы хотите отслеживать вход из скрипта на
SSHd
машина.Шаг 1 : Переменная оболочки '
SSH_CLIENT
'дает вам две части информации192.168.1.2
в строке ниже)56120
ниже)Шаг 2 : Теперь вы можете выполнить вход (в обратном направлении) к исходному IP (192.168.1.2) и проверить
UserID
,У тебя есть идентифицированный
user1@192.168.1.2
,источник
SSHd
владелец, имеющий хотя бы базовый доступ для входа на исходные машины.Это для удобства, из
ssh-keygen
Страница man на Debian:Я думаю, что ближайший, который вы получите для определения того, какой ключ использовался для входа,
ssh-add
, с -L, со страницы руководства:Вы Можно увеличьте уровень регистрации демона ssh до DEBUG1:
И журнал покажет отпечаток RSA ключа SSH, используемого для входа в систему:
Вы можете получить отпечаток ключа с
ssh-keygen
:Из файла авторизованных ключей вам придется разделить каждую строку на новый файл для чтения с
ssh-keygen -l
, Вот пример сценария Ruby, который сделает это:источник
Если у вас есть открытый ключ (подозреваемого пользователя), вы можете найти подпись в
auth.log
, Сопоставьте это с выводом из (обратите внимание, что-l
здесь маленький-L
):Эта команда запросит путь к открытому ключу и выведет подпись для этого ключа.
источник
Поскольку я не мог найти полный ответ в сети, я написал свой собственный сценарий bash:
#
Редактировать: я написал это много лет спустя, надеюсь, что это может пригодиться кому-то
https://github.com/sayajin101/SSH-Key-Login-Extended
источник