1

Я пытаюсь найти какой-нибудь вызов sshd (OpenSSH в Ubuntu), который принимает только одно соединение, а затем завершает процесс sshd когда это одно соединение закрывается.

В документах sshd я не вижу ничего, что указывало бы на то, что это возможно по своей природе, поэтому я подумал, что возможно установить nc как прокси-сервер с одним выстрелом, но, похоже, это не решает проблему, связанную с процессом sshd продолжает работать после закрытия соединения.

У кого-нибудь есть идеи?

2 ответа2

3

Запуск sshd в режиме отладки заставляет его принимать только одно соединение и затем выходить, как указано на странице руководства для sshd:

-d

Режим отладки. Сервер отправляет подробный отладочный вывод со стандартной ошибкой и не помещает себя в фоновый режим. Сервер также не будет разветвляться и будет обрабатывать только одно соединение. Эта опция предназначена только для отладки на сервере. Несколько опций -d повышают уровень отладки. Максимум 3.

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

/usr/sbin/sshd -d
1

Возможно, вы можете использовать pam для этого. В каталоге /etc/pam.d найдите файл, связанный с SSH (в моем случае он называется sshd на компьютере с Ubuntu Trusty). Отредактируйте его и добавьте следующую строку:

session     optional    pam_exec.so quiet /opt/myscript.sh

Это заставит скрипт вызываться при любом входе и выходе из системы. Поскольку вы хотите выполнить действие только при выходе из системы, содержимое сценария может выглядеть примерно так:

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  /etc/init.d/sshd stop
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .