Создайте фоновый демон для прослушивания входящих запросов SSH.

вам нужно определить pid родительского процесса и убить его

эта команда поможет вам определить родительский процесс вашего питона

ps fax -o ppid,pid,args

или

ps fax 

или

pstree -p

f — полезный флаг для отображения связи между процессами при использовании ps

0
17.06.2020, 18:52
1 ответ

Чтобы предоставить услугу через TCP, некоторая программа должна вызвать listen(), чтобы получить слушающий сокет , и та же программа или связанная с ней должна вызвать accept(), чтобы принять отдельный входящие TCP-соединения как дополнительные подключенные сокеты . В этом отношении демон сервера OpenSSH работает в двух основных режимах.

  • Запускается без опции -i. Он выполняет listen(), а затем в цикле повторно вызывает accept()и fork(), отключая дочерние процессы для каждого входящего соединения.
  • Запускается с опцией -i. Он ожидает, что что-то еще вызовет listen(), accept()и fork()и выполнит его с подключенным сокетом как уже -открытый файловый дескриптор.

Последний режим представляет собой nowaitстиль TCP-сервера под старым inetdсуперсервером, стиль Accept=yesмодуля сокета TCP в systemd и стиль сервера, который работает с UCSPI Дэниела Дж. Бернштейна -ПТС.

Прежний режим, к сожалению, не соответствует стилю waitTCP-сервера в inetdи стилю Accept=noTCP-сервера в systemd. OpenSSH не использует протокол LISTEN_FDSи не подтверждает уже открытые файловые дескрипторы -для прослушивания сокетов.Кроме того, прискорбно то, что некоторые люди поощряют этот режим использования, и поэтому, вероятно, именно так OpenSSH настроен для работы в вашей системе.

Потому что вам нужен второй режим.

Вы заключаете ssh -iвнутрь чего-то еще, что просматривает информацию об удаленном конце соединения и делает что-то, основываясь на том, что находит до этого exec()ing ssh -i. (UCSPI -TCP делает это очень просто, поскольку информация об удаленном конце помещается в переменные среды. )Затем вы вызываете оболочку вместо прямого вызова ssh -i.

Детали выполнения этого действия зависят от вас, потому что они зависят от того, о чем вы нам не сказали, например от того, какую систему управления службами вы используете. Это может варьироваться от перетаскивания -во фрагменте с другим ExecStartв сервисной единице systemd через пересмотренный файл конфигурации xinetdдо замены программы ./serviceв сервисном пакете nosh.

Альтернативный подход, который будет работать с не--iрежимом вызова, но который не обобщается за пределы определенных опций одной конкретной программы, предоставляющей одну конкретную службу (, в отличие от вышеописанного подхода ), заключается в следующем: используйте механизм Matchв файле sshd_config. Это не может ничего сделать, кроме установки подмножества параметров OpenSSH, включая уровень журнала, и, конечно, не применяется даже к другому программному обеспечению сервера SSH, не говоря уже о других типах служб.

Будьте благоразумны в своей обертке. Собственно SSH-соединение не запущено и не работает во время его выполнения; вы должны не(в целях безопасности )читать какие-либо данные из сетевого соединения и не записывать в него; и единственное, что нужно сделать, это проверить адреса/порты по спискам и, следовательно, каким-то образом настроить параметры сеанса -.

Дополнительная литература

2
18.03.2021, 23:26

Теги

Похожие вопросы