Как я могу получить комментарий текущего authorized_keys ssh ключ?

Править: Что я действительно должен знать, КАКОЙ ssh ключ от authorized_keys использовался для идентификации в настоящее время зарегистрированного пользователя.

По словам "человека sshd":

Protocol 2 public key consist of options, keytype, base64-encoded key, comment.

Я вижу, что, когда я использую ssh-keygen, комментарий обычно является локальными идентификационными данными пользователя. Там какой-либо путь состоит в том, чтобы получить доступ к этому значению, когда я нахожусь на удаленном компьютере? (Отчасти как SSH_CLIENT окружают переменную),

(Принятие, я осуществляю комментарий, чтобы быть удаленными какими-то идентификационными данными, я хотел бы зарегистрировать это из сценария оболочки! Это находится на человечности),

6
задан 13.08.2009, 10:04

4 ответа

Я лично не рекомендовал бы это решение, но отправляю это ради обсуждения.

Если Вы готовы:

  1. Измените Регистрирующийся уровень SSHd
  2. Предоставьте свой доступ сценария к/var/log/secure (или эквивалентный файл журнала)

Можно установить "ОТЛАДКУ 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 Информация об отладке в другой файл и управляющий доступом к тому файлу и сценарию), но в конце, если день это все еще заставит Вас съежиться.

3
ответ дан 07.12.2019, 16:11

Это поможет, если Вы захотите отследить вход в систему из сценария на SSHd машина.

Шаг 1: переменная Shell'SSH_CLIENT'дает Вам две части информации

  • Удаленный IP-адрес (192.168.1.2 в строке ниже)
  • Удаленный порт TCP, по который соединенный клиент (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.

1
ответ дан 07.12.2019, 16:11
  • 1
    Но это решение требует, чтобы sshd машина смогла войти в систему всех клиентских машин. – krosenvold 13.08.2009, 10:02
  • 2
    @krosenvold, довольно верный. Я принимаю обычно среда Unix с 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
1
ответ дан 07.12.2019, 16:11
  • 1
    Да, это для удобства. Но я могу осуществить его, чтобы быть значением, которое известно мне. Я просто должен знать, какой ключ использовался для авторизации пользователя – krosenvold 13.08.2009, 10:04

Если у Вас есть открытый ключ (подозреваемого пользователя), можно искать подпись в auth.log. Соответствие, что с выводом от (отмечают это -l является здесь маленьким -L):

ssh-keygen -l <enter>

Эта команда запросит путь к открытому ключу и произведет подпись для того ключа.

1
ответ дан 07.12.2019, 16:11

Теги

Похожие вопросы