J'essaie de coder un script shell qui utilise une connexion ssh pour effectuer des "pulsations". Je souhaite mettre fin à la connexion côté client et côté serveur après un certain délai (une fois la connexion interrompue).
Ce que j'ai trouvé jusqu'à présent:
- TCPKeepAlive oui / non pour ssh et sshd
- ClientAliveCountMax pour sshd
- ClientAliveInterval pour sshd
- ServerAliveCountMax pour ssh
- ServerAliveInterval pour ssh
Pour changer "ClientAliveCountMax", je devrais modifier sshd_config sur chaque ordinateur cible (cette option est désactivée par défaut).
Ma question est donc la suivante: puis-je également utiliser "TCPKeepAlive" (sans rien changer d'autre sur les machines source / cible)?
Le système d'exploitation cible est SLES11 SP2 - mais je ne pense pas que ce soit pertinent ici.
ControlMaster
option et utilisez-vous des connexions esclaves?Réponses:
Vous voudrez probablement utiliser les paramètres ServerAlive pour cela. Ils ne nécessitent aucune configuration sur le serveur et peuvent être définis sur la ligne de commande si vous le souhaitez.
Cela enverra un message ssh keepalive toutes les 5 secondes, et s'il est temps d'envoyer un autre keepalive, mais que la dernière réponse n'a pas été reçue, la connexion est interrompue.
La différence critique entre
ServerAliveInterval
etTCPKeepAlive
est la couche sur laquelle ils opèrent.TCPKeepAlive
opère sur la couche TCP. Il envoie un paquet TCP ACK vide. Les pare-feu peuvent être configurés pour ignorer ces paquets. Ainsi, si vous passez par un pare-feu qui supprime les connexions inactives, il se peut que ceux-ci ne maintiennent pas la connexion en vie.ServerAliveInterval
opère sur la couche ssh. En fait, il enverra des données via ssh. Le paquet TCP contient donc des données cryptées et un pare-feu ne peut pas dire si c'est un paquet keepalive ou légitime, alors ils fonctionnent mieux.la source
Seconds between keepalives
à 1800 sous Paramètres | Lien.L’
TCPKeepAlive
option est en réalité une méthode très différente pour maintenir les connexions vivantes des options de type ClientAlive ou ServerAlive.Sont par page de manuel BSD SSH , nous pouvons lire que:
Le
TCPKeepAlive
assurez - vous que le système doit envoyer des messages TCP keepalive de l'autre côté. L'option par défaut est toujours activée.Si vous utilisez
ClientAliveInterval
, vous pouvez désactiverTCPKeepAlive
. Cette option envoie un message via le canal chiffré pour demander une réponse du client (la valeur par défaut est 0, aucun message n’est donc envoyé au client) etClientAliveCountMax
définit le nombre de messages du client en cours avant que sshd ne le déconnecte, en mettant fin au session.la source