Comment puis-je créer un processus one-shot sshd?


1

J'essaie de trouver une invocation de sshd (OpenSSH sur Ubuntu) qui accepte une seule connexion, puis met fin à la sshd processus lorsque cette connexion se ferme.

Je ne vois rien dans le sshd docs qui indiqueraient que cela est intrinsèquement possible, donc je pensais qu'il serait possible de gréer nc comme un proxy, mais cela ne semble pas résoudre le problème où le sshd processus continue de s'exécuter après la fermeture de la connexion.

Quelqu'un a des idées?


Ça sonne terriblement XY-ish . Qu'est-ce que vous essayez réellement de réaliser?
Daniel B

Fonctionnement sshd sur une instance dans un cluster et se connecter à elle. Le cycle de vie de cette tâche / instance de cluster est lié à la durée de vie du processus lancé. Je veux créer l'instance, me connecter une fois, puis la faire automatiquement mourir lorsque le client se déconnecte. Je suppose que la chose "seulement une connexion" n'est pas strictement requise, mais, au bout du compte, le sshd processus doit mourir lorsque la dernière connexion client disparaît.
ipmcc

Réponses:


3

Fonctionnement sshd en mode débogage, il n’accepte qu’une connexion, puis quitte, comme indiqué dans la page de manuel de sshd:

-ré

Mode débogage. Le serveur envoie la sortie de débogage détaillée à l'erreur standard et ne se place pas en arrière-plan. De plus, le serveur ne divisera pas et ne traitera qu'une connexion. Cette option est uniquement destinée au débogage du serveur. Les options -d multiples augmentent le niveau de débogage. Le maximum est 3.

Ceci est un cas d’utilisation typique pour le débogage, si vous exécutez le serveur de la manière suivante:

/usr/sbin/sshd -d

Sensationnel. J'avais essayé ça, mais ça avait l'air de continuer à vivre, alors je suis passé à autre chose. Cela a dû être un autre problème, parce que ça fonctionne maintenant. Merci!
ipmcc

1

Peut-être que vous pouvez utiliser pam pour ça. Dans ton /etc/pam.d répertoire trouver un fichier lié à SSH (dans mon cas, il s’appelle sshd sur une machine Ubuntu Trusty). Modifiez-le et ajoutez une ligne comme celle-ci:

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

Cela fera que le script sera appelé lors de toute connexion et déconnexion. Comme vous souhaitez uniquement effectuer une action sur la déconnexion, le contenu du script pourrait ressembler à ceci:

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  /etc/init.d/sshd stop
fi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.