Узнайте, использует ли пользователь SSH-аутентификацию на основе пароля или ключа.
Представьте себе этот сценарий. Вы только что настроили аутентификацию на основе ключей SSH на своем сервере Linux. А затем вы решили полностью отключить аутентификацию на основе пароля и разрешить всем пользователям только аутентификацию на основе ключей. Прежде чем отключать аутентификацию по паролю, вы хотели бы проверить, какие пользователи все еще используют пароли для доступа к серверу через SSH. Как собираешься это сделать? Что ж, это возможно! В этом кратком руководстве объясняется, как определить, использует ли пользователь SSH-аутентификацию на основе пароля или ключа в Linux.
Узнайте, использует ли пользователь SSH-аутентификацию на основе пароля или ключа.
Мы можем определить, вошел ли пользователь на сервер Linux через SSH, используя пароль или ключ ssh. Это не 100% надежный и гарантированный способ, но все же хороший подход.
Сначала проверьте, существует ли файл ~/.ssh/authorized_keys
. Потому что в методе аутентификации на основе ключей SSH открытый ключ SSH должен быть загружен в системы, к которым вы хотите получить доступ через SSH. Открытые ключи обычно хранятся в файле с именем ~/.ssh/authorized_keys
в удаленных системах. Если этот файл существует, есть вероятность, что пользователь, вероятно, использует аутентификацию на основе ключей.
Затем проверьте файлы журнала аутентификации, чтобы определить, какой метод аутентификации в данный момент использует пользователь для доступа к удаленной системе. Метод аутентификации регистрируется в файле "/var/log/secure"
в системах на базе RPM (например, CentOS), файле "/var/log/auth.log"
в системах на базе DEB (например, Ubuntu).
Просто найдите запись пароля в файлах журнала аутентификации, используя команду grep или любой другой удобный вам способ.
grep 'password' /var/log/secure
Или,
grep 'password' /var/log/auth.log
Пример вывода:
[...]
May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2
May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2
Узнайте, использует ли пользователь SSH-аутентификацию на основе пароля или ключа в Linux.
Вы заметили строки "Принятый пароль для..." в приведенном выше выводе? Это означает, что пользователь получает доступ к удаленным системам, используя пароль. Согласно приведенному выше выводу, пользователи "senthil" и "sk" получают доступ к удаленной системе с использованием аутентификации по паролю ssh.
Если пользователь использует аутентификацию на основе ключей, вы, вероятно, увидите вывод, подобный приведенному ниже:
May 8 10:40:56 ostechnix sshd[3405]: Accepted publickey for sk from 192.168.225.37 port 41992 ssh2
Конечно, это немного сложно, если файл журнала очень длинный и содержит большое количество записей. В этом случае используйте команду "tail"
для просмотра определенного количества файлов журналов.
Например, следующая команда отобразит только последние 10 записей файла журнала:
grep 'password' /var/log/auth.log | tail -n 10
Пример вывода:
May 8 10:21:49 ostechnix sshd[2135]: Accepted password for senthil from 192.168.225.37 port 41920 ssh2
May 8 10:21:57 ostechnix sshd[2222]: Accepted password for sk from 192.168.225.37 port 41922 ssh2
May 8 10:24:57 ostechnix sshd[2360]: Accepted password for senthil from 192.168.225.37 port 41924 ssh2
May 8 10:25:04 ostechnix sshd[2448]: Accepted password for sk from 192.168.225.37 port 41926 ssh2
May 8 10:29:40 ostechnix sshd[2663]: Accepted password for senthil from 192.168.225.37 port 41938 ssh2
May 8 10:29:55 ostechnix sshd[2765]: Accepted password for sk from 192.168.225.37 port 41940 ssh2
May 8 10:39:34 ostechnix sshd[3064]: Accepted password for senthil from 192.168.225.37 port 41986 ssh2
May 8 10:39:55 ostechnix sshd[3184]: Accepted password for sk from 192.168.225.37 port 41988 ssh2
May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2
May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2
Вы также можете использовать флаг -f
, чтобы следить за журналом во время тестирования.
grep 'password' /var/log/auth.log | tail -f -n 10
Если вы хотите проверить весь файл журнала на наличие записей "пароль" постранично, используйте команду "less"
:
grep 'password' /var/log/auth.log | less
Чтобы найти все журналы, относящиеся к sshd
(успешные или неудачные попытки), замените «пароль» на «sshd» во всех приведенных выше командах.
grep 'sshd' /var/log/auth.log | tail -n 10
Другие руководства по SSH:
- Разрешить или запретить доступ по SSH определенному пользователю или группе в Linux
- Ограничить количество входов по SSH на пользователя/группу/систему
- Ограничить доступ к серверам Linux с помощью TCP-оболочек
- Выполнение команд в удаленных системах Linux через SSH
- Как создать псевдоним SSH в Linux
- Как подключиться по SSH к определенному каталогу в Linux
- SSLH - используйте один и тот же порт для HTTPS и SSH
- ScanSSH — быстрый SSH-сервер и открытый прокси-сканер
- Как возобновить частично переданные файлы по SSH с помощью Rsync
- Как запустить одну команду на нескольких удаленных системах одновременно
- DSH - запуск команды Linux на нескольких хостах одновременно
- Как предотвратить разрыв сеанса SSH в Linux
- Как включить SSH во FreeBSD
Надеюсь это поможет.