Как проверить логи sshd?

126

У меня установлена ​​Ubuntu 9.10, sshdи я могу успешно подключиться к ней, используя логин и пароль. Я настроил RSAвход в систему с ключом и теперь "Сервер отклонил наш ключ", как и ожидалось. Хорошо, теперь я хочу проверить sshdжурнал, чтобы выяснить проблему. Я осмотрел /etc/ssh/sshd_configи это

SyslogFacility AUTH
LogLevel INFO

Хорошо. Я смотрю /var/log/auth.logи ... это пусто О_О. Переход Loglevelна VERBOSEничего не помогает - auth.logвсе еще пусто. Любые намеки, как я могу проверить sshdжурнал?

grigoryvp
источник
7
Вы проверили свою конфигурацию системного журнала? Я не запускаю Ubuntu, но он может перенаправить средство AUTH в другой файл журнала. Может быть / var / log / messages?
Профессор Мориарти
Как проверить конфигурацию системного журнала? К сожалению, я не очень хорош в Linux :(. cat /var/log/messages | grep sshНичего не показывает :(.
grigoryvp
Ты прав. /etc/syslog.confперенаправляет AUTH на /var/logauth.log. Пожалуйста, напишите свой ответ, чтобы я мог принять его :)
grigoryvp
3
На моих серверах sshd регистрирует в / var / log / secure. Это настраивается в /etc/rsyslog.conf, в строке, начинающейся с «authpriv. *»
Исаак Бетеш,
1
AuthPriv ?? Как, черт возьми, мы должны были знать, что это как-то связано с sshd? :-)
Спенсер Уильямс

Ответы:

7

Если в данный момент никто не использует систему, вы можете сделать то, что я сделал в следующих случаях:

  • остановить службу sshd (по крайней мере, я смог сделать это при входе в систему через ssh)
  • запустите sshd вручную и добавьте некоторые опции -d, чтобы получить более подробный вывод отладочной информации. Если у вас нет ничего интересного, используйте те же ключи и настройте, что и при правильном запуске.
Пето
источник
143
Остановка SSHD на удаленном сервере - очень плохая идея. Это может решить проблему для некоторых (или большинства) настроек большую часть времени, но если НИЧЕГО не работает - ваше соединение, питание на любом конце, забывчивость и т. Д. - вы заблокированы «из коробки». Это плохие новости.
августа
1
Что ж, следует отметить, что единственный способ запустить службу после ее остановки вручную - это иметь какой-то другой доступ к ней, например, другое удаленное соединение без SSH, или вы сидите перед ним.
Спенсер Уильямс,
26
Как это отвечает на вопрос? Я приземлился здесь с веб-поиска, ожидая узнать, как проверить файлы журнала SSHD, а не то, что у вас сработало для какой-то проблемы ... Черт, я бы хотел, чтобы читатели в сети Stack Exchange действительно читали и отвечали на поставленный вопрос, а не вопрос они хотят, чтобы это было ....
4
Вы можете запустить другой sshd на другом порту. Подключитесь к этому. Затем остановите основной sshd и запустите новый на порту 22. Если что-то не получится, перезагрузите компьютер, используя DRAC или управление облаком. Вы должны иметь запуск sshd при загрузке, верно? Не волнуйтесь.
Бруно Броноски
1
@JoelESalas Сообщество не решает, какие ответы принимаются.
kasperd
155

Создание ответа на основе комментариев выше, кредит @Prof. Мориарти и @ Eye of Hell

Сбои аутентификации SSH регистрируются здесь /var/log/auth.log

Следующее должно дать вам только связанные с SSH строки журнала

grep 'sshd' /var/log/auth.log

Чтобы быть в безопасности, получите последние несколько сотен строк и затем выполните поиск (потому что, если файл журнала слишком велик, grep для всего файла будет потреблять больше системных ресурсов, не говоря уже о том, что для его запуска потребуется больше времени)

tail -500 /var/log/auth.log | grep 'sshd'

Баран
источник
8
Это ответ. Другой ответ с зеленой стрелкой - фальшивка. Изменить стрелку.
meshfields
5
Почему бы не использовать tail -f ...для мониторинга в режиме реального времени? Будет ли это проблемой с большими файлами журналов?
ingh.am
6
less +F ...будет «хвостик» в реальном времени, и это гораздо мощнее, чем хвост
Нортбен
5
И lnavдаже лучше, чем меньше / хвост
Уэйн Вернер
7
Ps: если ваш сервер Red Hat (например, CentOS), путь к журналу записей sshd / login будет / var / log / secure (проверьте / var / log папку для файлов журналов определенных дат). Смотрите этот ответ: serverfault.com/questions/465833/…
Брайан Хеллекин
15

Если вы можете легко попытаться снова разорвать соединение, одним из простых способов является запуск SSH-сервера на свободном порту, например 2222:

/usr/sbin/sshd -d -p 2222

и затем повторите попытку с:

ssh -p 2222 user@host

Используя другой порт -p 2222, нам не нужно останавливать основной сервер SSH, который может заблокировать нас.

Смотрите также: https://unix.stackexchange.com/a/55481/32558

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
1
Один из лучших вариантов, особенно если у вас есть только SSH-доступ к серверу. Отладка соединения путем остановки сервера ssh приведет к прекращению сеанса. Просто запустите новый демон ssh на другом порту и протестируйте вход в систему с использованием этого порта.
Аттила Антал
1

Если вы хотите увидеть все сообщения журнала о sshd, запустите это:

grep -rsh sshd /var/log |sort
гость
источник
2
Журналы начинаются с записей, Mar 14 19:52:04которые не включают год, и их нелегко отсортировать (хотя вам может повезти, sort --month-sortесли вы не пройдете границу между годами). Сами файлы журналов уже отсортированы, поэтому вам нужно просто сканировать их в правильном порядке. Кроме того, рекурсивный grep -rвызов будет очень медленным в системах с большими журналами. Нет причин для дополнительного сканирования таких вещей, как ваши журналы HTTPD.
Адам Кац
1

Ты можешь tail -f /var/log/auth.log

Адитья Миттал
источник
1
Добро пожаловать в ServerFault. Вы читали вопрос? Он не получает данные в этом файле. tailЭто бесполезно, если в нем нет данных.
птенцы
@ Чикс Это смешно. Ответ с большинством голосов почти такой же, как этот ..
Qback