Sessions SSH Sécher lors de la fermeture / Redémarrer

J'ai un serveur sur lequel vous courez Debian et sshd, Et au cas où je devrais redémarrer le serveur, ma session SSH gèle du côté du client jusqu'au délai d'attente TCP. Je suppose que c'est parce que quand quand

sshd

se termine, il ne ferme pas les sessions ouvertes SSH Pour l'hôte. Que dois-je faire pour faire

sshd

D'abord désactiver tout le monde, puis compléter le travail comme d'habitude? Pendant que je ne vois pas le paramètre dans

man sshd_config

Cela est dû au comportement quand il est désactivé.
Invité:

Agathe

Confirmation de:

Lorsque vous désactivez ou redémarrez votre système,

systemd

Essayer d'arrêter tous les services le plus rapidement possible. Cela inclut un réseau désactivé et l'achèvement de tous les processus toujours actifs. - Généralement dans cet ordre. C'est pourquoi quand quand systemd Tue les processus ramifiés SSH, qui gérent vos sessions SSH, La connexion réseau est déjà désactivée et ils n'ont pas la possibilité de fermer correctement la connexion du client.

Votre première pensée peut être juste tuer tous les processus SSH En première étape tout en achetant le travail, il existe des fichiers de service assez. systemd, qui fait ce particulier.

Mais il y a bien sûr une solution plus élégante. (Comment ça "est censé" faire):

systemd-logind

.


systemd-logind

Suites Sessions utilisateur actives (Local I. SSH) Et nomme tous les processus générés en eux, sur les "sections". Ainsi, lorsque le système est éteint, systemd peut simplement SIGTERM Toutes les sections personnalisées (y compris un processus ramifié SSH, qui traite une session spécifique), Et poursuivez ensuite l'achèvement du travail et du réseau.


systemd-logind

Module requis PAM Pour recevoir des notifications sur les nouvelles sessions utilisateur, et vous aurez besoin de

dbus

utilisation

loginctl

Pour vérifier son statut, installez les deux:

apt-get install libpam-systemd dbus

Assurez-vous que votre

/etc/ssh/sshd_config

effectivement utiliser le module avec

UsePAM yes

.

Alice

Confirmation de:

C'est ce que vous devez installer du côté client et non du côté serveur. Éditez votre propre

~/.ssh/config

contenir

ServerAliveInterval 15
ServerAliveCountMax 5

Cela signifie qu'après 15 Secondes d'inactivité Votre client enverra un message au serveur. S'il ne reçoit aucune réponse, il essaiera de répéter jusqu'à ce que 5 Une fois, et s'il ne reçoit toujours pas de réponse, il fermera la session.

Christine

Confirmation de:

Ce comportement est rapporté dans cette
https://bugs.debian.org/cgi-bi ... 51636
, Vous n'avez besoin que de configurer correctement les scénarios d'arrêt fournis avec le package, car ils ne sont pas automatiquement copiés par défaut:

cp /usr/share/doc/openssh-client/examples/ssh-session-cleanup.service /etc/systemd/system/
systemctl enable ssh-session-cleanup.service

Agathe

Confirmation de:

Vous pouvez spécifier les paramètres sur Jenny D. dans votre réponse, uniquement pour une commande ssh, par exemple

ssh -t -o ServerAliveInterval=1 -o ServerAliveCountMax=1 user@host sudo poweroff

Si vous le faites souvent, vous pouvez écrire un script.

Catherine

Confirmation de:

Ça marche avec moi avec lshd. Donc, la solution serait

apt install lsh-server
apt remove openssh-server

Giselle

Confirmation de:

Malheureusement, serverfault Je ne me permettais pas de répondre dans le flux, car trop peu de lunettes ces dernières années. Mais je n'ai pas besoin de spam dans d'autres blogs pour se déverrouiller ^^ ... Donc, une réponse séparée:

Comme mentionné Rfraile

cp /usr/share/doc/openssh-client/examples/ssh-session-cleanup.service /etc/systemd/system/
systemctl enable ssh-session-cleanup.service

travail. Pour l'utiliser sans redémarrer l'instance / Serveurs, vous devez effectuer des tâches supplémentaires:

systemctl daemon-reload
systemctl start ssh-session-cleanup.service

Par conséquent, le service est enregistré et lancé, et systemd besoin de l'arrêter pour redémarrer / Achèvement des travaux.

Pour répondre aux questions, connectez-vous ou registre