J'ai ServerAliveInterval
et dans le cas de quelques machines également ClientAliveInterval
défini à 540 dans les fichiers de configuration client / serveur SSH (je suppose que le réglage sur plus que ce ne serait pas une bonne idée). Je travaille avec de nombreuses sessions SSH qui gèlent actuellement après quelques minutes.
Comment puis-je le réparer? Ce que je veux, c'est qu'une session ne soit pas du tout gelée. Ainsi, si j'ouvre une session à 8 heures et que je ne l'utilise pas pendant 4 heures, par exemple, je l'utilise encore à 12 heures sans devoir me reconnecter. .
TCPKeepAlive yes
?TCPKeepAlive yes
- dépend de la machine.autossh
...screen
. Mais je vote toujours votre question parce que je rencontre le même problème après seulement une minute ou deux.Réponses:
Les modifications que vous avez apportées dans
/etc/ssh/ssh_config
et/etc/ssh/sshd_config
sont corrects , mais ne toujours pas avoir d'effet.Pour que votre configuration fonctionne, apportez ces modifications de configuration sur le client:
/etc/ssh/ssh_config
ServerAliveInterval Le client enverra un paquet nul au serveur toutes les 100 secondes pour maintenir la connexion active.
Le paquet NULL est envoyé par le serveur au client. Le même paquet est envoyé par le client au serveur. Un paquet TCP NULL ne contient pas d'indicateur de contrôle tel que SYN, ACK, FIN, etc., car le serveur n'exige pas de réponse du client. Le paquet NULL est décrit ici: https://tools.ietf.org/html/rfc6592
Ensuite, configurez la partie sshd sur le serveur.
/etc/ssh/sshd_config
ClientAliveInterval Le serveur attend 60 secondes avant d'envoyer un paquet nul au client pour maintenir la connexion active.
TCPKeepAlive Est-il prévu de s'assurer que certains pare-feu ne perdent pas les connexions inactives.
ClientAliveCountMax Server enverra des messages actifs au client même s'il n'a reçu aucun message du client.
Enfin redémarrer le
ssh server
service ssh restart
ouservice sshd restart
selon le système sur lequel vous vous trouvez.la source
ServerAliveCountMax
est également nécessaire pour que cela soit aussi fiable que possible. Et si les deuxServerAliveInterval
etClientAliveInterval
sont suffisamment bas, que je ne pense pas qu'il y aura besoin pourTCPKeepAlive
. En outre, s’il existe des boîtes de médiation, elles peuvent toujours perdre leur statut même si tous les paramètres mentionnés précédemment sont configurés avec la plus grande exactitude. Il peut être utile d’utiliser MPTCP (si le client et le serveur le prennent en charge).ClientAliveInterval
etClientAliveCountMax
sont des options de serveur ssh, donc destinées àsshd_config
et nonssh_config
ssh_config
les nouvelles sessions, ce fichier sera lu. Le/etc/environment
fichier est une chose différente qui a le formatVAR="value"
sans espacesVAR = "value"
serait donc invalide. Sourcing de/etc/ssh/ssh_config
cette façon, c’est-à-dire:Port 22
ouHost *
qui les traitera comme des commandesSuggestion personnelle: utiliser
screen
sur l’hôte distant; il réussira à garder votre connexion active aussi longtemps qu'elle restera active dans un terminal.Voici ce que j'ajoute généralement à
/etc/screenrc
l'identification rapide de mes sessions d'écran:EDIT: Conseils.
La
hardstatus
chaîne affichera une ligne d'état inférieure telle que celle-ci:La mémoire tampon de défilement est également étendue à 8192 lignes au lieu des 1000 à 1500 habituelles (en fonction de la distribution).
la source
screenrc
fichier? Comment configurer le système l’écran de lancement / tmux juste après ma connexion?screen
ne garde pas votre connexion ssh en vie. Il exécute les processus dans un terminal virtuel indépendant du terminal utilisateurssh
auquel vous vous connectez, afin que le processus ne repose pas sur votre connexion. Vous perdrez toujours votressh
connexion jusqu'à ce qu'elle soit résolue.screen
, je conseille aux nouveaux utilisateurs de commencertmux
.Avec OpenSSH:
Vous devez activer
à la fois dans votre client ssh_config (par exemple
/etc/ssh/ssh_config
ou dans~/.ssh/config
) et votre serveur SSH de destination exécutant OpenSSH (par exemple, / etc / ssh / sshd_config).Donc chaque fois que votre connexion est inactive, OpenSSH envoie un paquet factice à votre hôte de destination ...
la source
The default is ''yes'' (to send TCP keepalive messages), and the server will notice if the network goes down or the client host crashes.
...this means that connections will die if the route is down temporarily, and some people find it annoying.
déconnexion de"[…] network goes down […] client host crashes […] route is down […]"
sont des erreurs graves, aucune configuration SSH ne peut intercepter. Le problème principal ici concerne les sessions SSH inactives, pas les pannes de réseau. Par conséquent, pour résumer: - activezTCPKeepAlive yes
à la fois le serveur et le client. - misClientAliveInterval
sur le serveur - misIdleTimeout
sur le serveur - misClientAliveCountMax
Cela devrait faire l'affaire ...Si le problème est lié à un ordinateur portable en veille prolongée ou à une connexion réseau inférieure au préfet, je vous recommanderais d'utiliser celle
mosh
qui fonctionnessh
et qui permet la reconnexion automatique.Sur le site :
En combinaison avec
tmux
(ou les anciensscreen
), cela me permet de me connecter viassh
un serveur à partir de mon ordinateur portable et de rester connecté pendant des jours, même lors de la modification de connexions Wi-Fi et des pertes de données sur les mobiles.la source
Vérifiez votre configuration sshd sur la machine hôte
/etc/sshd_config
pour leIdleTimeout
paramètre .la source