Править: Что я действительно должен знать, КАКОЙ ssh ключ от authorized_keys использовался для идентификации в настоящее время зарегистрированного пользователя.
По словам "человека sshd":
Protocol 2 public key consist of options, keytype, base64-encoded key, comment.
Я вижу, что, когда я использую ssh-keygen, комментарий обычно является локальными идентификационными данными пользователя. Там какой-либо путь состоит в том, чтобы получить доступ к этому значению, когда я нахожусь на удаленном компьютере? (Отчасти как SSH_CLIENT окружают переменную),
(Принятие, я осуществляю комментарий, чтобы быть удаленными какими-то идентификационными данными, я хотел бы зарегистрировать это из сценария оболочки! Это находится на человечности),
Я лично не рекомендовал бы это решение, но отправляю это ради обсуждения.
Если Вы готовы:
Можно установить "ОТЛАДКУ LogLevel" в sshd_config для получения следующих записей каждый раз, когда ssh ключ используется успешно для аутентификации:
Aug 13 11:51:13 myhost sshd[20195]: debug1: matching key found: file /home/myuser/.ssh/authorized_keys, line 3
Aug 13 11:51:13 myhost sshd[20195]: Found matching DSA key: 00:aa:bb:cc:dd:ee:00:c0:0b:fa:ce:00:00:ab:cd:ef
Запись сценария, чтобы проанализировать журналы и получить релевантную информацию была бы тривиальна. Вы могли, вероятно, grep для "sshd [$PPID]" для сокращения строк, которые сценарий имеет к munge.
Действительно обратите внимание, что изменение loglevel для ОТЛАДКИ увеличит размер значительных журналов и может нарушить конфиденциальность пользователей. От "человека sshd_config":
Вход с Уровнем отладки нарушает конфиденциальность пользователей и не рекомендуется.
Я уверен, что существуют различные шаги, которые можно сделать для создания этого решения немного менее ужасным (например, регистрирующийся sshd Информация об отладке в другой файл и управляющий доступом к тому файлу и сценарию), но в конце, если день это все еще заставит Вас съежиться.
Это поможет, если Вы захотите отследить вход в систему из сценария на SSHd
машина.
Шаг 1: переменная Shell'SSH_CLIENT
'дает Вам две части информации
192.168.1.2
в строке ниже)56120
ниже)SSH_CLIENT='192.168.1.2 56120 22' ----------- ----- Source IP Port
Шаг 2: можно теперь сделать вход в систему (назад) исходного IP (192.168.1.2) и проверить UserID
.
SSHd-Server$ ssh you@192.168.1.2 exec "netstat -et | grep 56120" tcp 0 0 hostname:56120 localhost:ssh ESTABLISHED user1 9937126 ----- -----
Вы определили user1@192.168.1.2
.
SSHd
владелец, имеющий, по крайней мере, основной доступ входа в систему на исходных машинах.
– nik
13.08.2009, 14:41
Это для удобства, от 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
Если у Вас есть открытый ключ (подозреваемого пользователя), можно искать подпись в auth.log
. Соответствие, что с выводом от (отмечают это -l
является здесь маленьким -L
):
ssh-keygen -l <enter>
Эта команда запросит путь к открытому ключу и произведет подпись для того ключа.