Як я можу зробити одношаровий sshd процес?


1

Я намагаюся знайти деякий виклик sshd(OpenSSH в Ubuntu), який приймає лише одне з'єднання, а потім припиняє sshdпроцес, коли це одне з'єднання закривається.

Я не бачу нічого в sshdдокументах, що вказувало б на те, що це по суті можливо, тому я думав, що це може бути сфальсифіковано ncяк одноразовий проксі, але це, здається, не вирішує проблему, коли sshdпроцес продовжує працювати після з'єднання перервано.

У когось є якісь ідеї?


Звучить жахливо XY-ish . Чого ви насправді намагаєтесь досягти?
Даніель Б

Запуск sshdекземпляра в кластері та підключення до нього. На цьому завдання / екземпляр кластера життєвий цикл прив'язаний до тривалості запущеного процесу. Я хочу нерестувати екземпляр, підключитися до нього один раз, а потім автоматично загинути, коли клієнт відключається. Я думаю, що "лише одне з'єднання" річ не вимагається строго, але, суть полягає в тому, що sshdпроцес повинен загинути, коли закінчується останнє з'єднання клієнта.
ipmcc

Відповіді:


3

Запуск sshdу режимі налагодження змушує прийняти лише одне підключення та перерватись, як зазначено на сторінці керівництва для sshd:

-d

Режим налагодження. Сервер надсилає багатослівний налагоджувальний вихід на стандартну помилку, і не ставить себе на задній план. Сервер також не розщедриться і обробить лише одне з'єднання. Цей параметр призначений лише для налагодження для сервера. Опції з декількома параметрами підвищують рівень налагодження. Максимум - 3.

Це типовий випадок використання для налагодження, якщо ви запускаєте сервер так:

/usr/sbin/sshd -d

Ого. Я намагався це зробити, але, здавалося, продовжував жити, тому я продовжував продовжувати. Мабуть, була якась інша проблема, бо вона працює зараз. Дякую!
ipmcc

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.