Несколько разработчиков используют общую учетную запись на тестовом сервере, используя аутентификацию с открытым ключом. Есть ли способ узнать, какой ключ использовался для аутентификации (например, комментарий ключей)?
... используя общую учетную запись ...
Спасибо за прекрасный пример, на который можно указать, объясняя, почему это плохая идея. ;-)
А если серьезно, то, что ты хочешь, не может быть сделано наяву. И если под «комментарием ключей» вы подразумеваете комментарий, который находится в файле id_rsa после ключа, это тоже недопустимо. Это комментарий, он не отправляется на сервер на другой стороне.
В самом деле. Создайте несколько учетных записей.
Вы хотите выяснить это после того, что уже произошло (криминалистическая экспертиза), или хотите сделать это так, чтобы вы могли регистрировать, кто что делает?
Для криминалистики: в моей системе Fedora /var/log/secure
содержит записи о каждой аутентификации открытого ключа и имени пользователя, но не говорит, какой ключ был использован. Тебе, наверное, здесь не повезло
Для будущей проверки: вы можете использовать authorized_keys
файл, чтобы установить команды, которыми ограничивается каждый вход в систему, а затем запустите программу, которая регистрирует аутентификацию (и, возможно, последующие команды, используя что-то вроде судоскрипт):
Если фраза параметров в начале строки содержит ключевое слово command = "string", то любое ssh-соединение, которое аутентифицируется с использованием этого конкретного ключа, будет запускать только указанную команду, даже если в командной строке, которая была ему дана, указана другая команда.
Однако следует сказать, что, вероятно, имеет смысл создать несколько учетных записей, а затем настроить общую область доступа ...
Если вы установите sshd для ведения журнала на достаточно подробном уровне, будет напечатан отпечаток ключа, используемого для входа в систему. Впрочем, журналы заполняются ужасно быстро.
Для проверки и если ваши люди используют ssh-agent, вы можете поместить это в свой .bashrc:
SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log