Назад | Перейти на главную страницу

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

Я создал сценарий оболочки, который задает подключенному пользователю вопрос, а затем выдает ему подсказку. Оболочка отправляет вопрос в базу данных для регистрации. Проблема в том, что наши разработчики используют общую учетную запись, но у каждого пользователя есть свой закрытый ключ. Есть ли способ прочитать с помощью сценария оболочки (bash), какой открытый ключ имеет подключенный пользователь?

Аналогичная подсказка была на Unix и Linux SE. Имея это в виду, вы можете найти последнюю запись в журналах для подключающегося IP:

REMOTE_IP=${SSH_CONNECTION%% *}
grep -B1 ${REMOTE_IP} /var/log/auth.log

Предположим, вы используете debian, журналы sshd идут в auth.log. Если использовать дистрибутив, подобный RH, они будут в secure.log.

Вы можете поднять уровень ведения журнала sshd до VERBOSE, установив директиву LogLevel в /etc/ssh/sshd_config

LogLevel DEBUG

это заставляет sshd регистрировать следующее для каждого соединения

Aug 17 12:16:20 centos sshd[9587]: Connection from 192.168.254.200 port 58107
Aug 17 12:16:20 centos sshd[9587]: Found matching RSA key: 54:d2:06:cf:85:ac:89:f6:3c:a8:73:c7:a1:30:c2:8b
Aug 17 12:16:20 centos sshd[9588]: Postponed publickey for user from 192.168.254.200 port 58107 ssh2
Aug 17 12:16:20 centos sshd[9587]: Found matching RSA key: 54:d2:06:cf:85:ac:89:f6:3c:a8:73:c7:a1:30:c2:8b
Aug 17 12:16:20 centos sshd[9587]: Accepted publickey for user from 192.168.254.200 port 58107 ssh2
Aug 17 12:16:20 centos sshd[9587]: pam_unix(sshd:session): session opened for user user by (uid=0)

Переменная среды SSH_CONNECTION содержит информацию о текущем соединении.

192.168.254.200   58107          192.168.254.89   22 
<sourece IP>      <source port>  <destination IP> <destination port>

Немного написав сценарии, можно будет соединить их вместе.