Pour maintenir la connexion active , vous pouvez vérifier dans /etc/ssh/ssh_configla ligne où il est indiqué ServerAliveInterval, qui vous indique à quelle fréquence (en secondes) votre ordinateur va envoyer un paquet nul pour maintenir la connexion active. Si vous avez un 0 qui indique que votre ordinateur n'essaie pas de maintenir la connexion active (il est désactivé), sinon, il vous indique à quelle fréquence (en secondes) il envoie le paquet susmentionné. Essayez de mettre en 120 ou 240, si cela tue encore votre connexion, vous pouvez aller plus bas, peut-être à 5, si avec ce nombre cela ne se produit pas, c'est peut-être votre routeur qui décharge la connexion pour libérer de la mémoire.
Pour le tuer quand il est raccroché , vous pouvez utiliser le caractère d'échappement ssh:
~.
Autrement dit, appuyez sur le tilde, puis sur le point; si cela ne fonctionne pas, appuyez sur Entrée avant d'appuyer sur cette touche, la connexion sera immédiatement supprimée.
Ok, vous pouvez tuer la connexion avec un ~.bon conseil! Mais que fait-il réellement?
CousinCocaine
La seule chose qui me laissait perplexe était de savoir si je devais ou non redémarrer sshd, mais il me semble que le fait de sortir de la session et de se reconnecter a fait l'affaire
dgig
Souvent le ~. ne fonctionne pas pour moi pendant plusieurs minutes. Pourquoi donc?
Sridhar Sarnobat
2
L'emplacement de ssh_configest /etc/ssh/ssh_configsur Mac OS X. Je modifierais la réponse moi-même, mais je n'ai pas assez de représentants sur ce site pour le faire.
Erik B
dois-je mettre cela dans le client ou le serveur? Je pense client, mais peut être plus clair.
EralpB
23
Vous pouvez:
Configurez votre système, pour l’ensemble du système, pour toutes les connexions. En modifiant: / etc / ssh / ssh_config
, ajoutez la ligne suivante:
ServerAliveInterval10
Ou, par serveur ~ / .ssh / config
Host keepsdroppingme.com
ServerAliveInterval10
Qu'est-ce que cela envoie-t-il en masse, toutes les 10 secondes ...
Vous pouvez également essayer d'utiliser le projet génial Mosh . Il gérera gracieusement les pertes réseau, les machines en veille, etc. et restaurera la connexion lorsque vous aurez à nouveau un réseau opérationnel.
Une autre solution plus respectée consiste à utiliser tmux sur la machine distante. Dans ce cas, vous pouvez toujours avoir un tuyau cassé, mais si vous reconnectez votre shell et vos applications attendront comme vous les avez laissées.
En fait, c'est exactement ce que je fais maintenant.
Dan
5
Les différentes réponses ici sont en conflit en ce qui concerne le chemin exact des fichiers de configuration. Peut-être que c'est différent dans différents Unix? Je suggère de lire les pages de manuel de votre système!
Dans man ssh (1) , recherchez le texte: config . Sur mon système, j'ai le choix entre des fichiers de configuration système ou ceux de cet utilisateur (et les chemins sont étrangement différents).
Dans man ssh_config (5) , recherchez le texte: alive . Sur mon système, il semble que je doive définir ServerAliveInterval et ServerAliveCountMax .
Ce qui a fonctionné pour moi, sur macOS 10.12 Sierra, est de mettre les deux lignes suivantes dans ~ / .ssh / config:
ServerAliveInterval20ServerAliveCountMax180
Maintenant, je peux ssh sur mon serveur Ubuntu 16.04 sans déconnexion pendant 20 * 180 secondes = 1 heure. Fait ma journée!
Vient de résoudre ce problème, ajoutez les lignes suivantes dans $HOME/.ssh/config.
Host*ServerAliveInterval120TCPKeepAlive no
Paramètre TCPKeepAlive noindique au client de simplement supposer que la connexion est toujours valide jusqu'à preuve du contraire, à la demande de l'utilisateur, ce qui signifie que des ruptures de connexion temporaires lorsque votre terme ssh est inactif en arrière-plan ne tueront pas la connexion.
~.
bon conseil! Mais que fait-il réellement?ssh_config
est/etc/ssh/ssh_config
sur Mac OS X. Je modifierais la réponse moi-même, mais je n'ai pas assez de représentants sur ce site pour le faire.Vous pouvez:
Configurez votre système, pour l’ensemble du système, pour toutes les connexions. En modifiant: / etc / ssh / ssh_config , ajoutez la ligne suivante:
Ou, par serveur ~ / .ssh / config
Qu'est-ce que cela envoie-t-il en masse, toutes les 10 secondes ...
la source
Vous pouvez également essayer d'utiliser le projet génial Mosh . Il gérera gracieusement les pertes réseau, les machines en veille, etc. et restaurera la connexion lorsque vous aurez à nouveau un réseau opérationnel.
Une autre solution plus respectée consiste à utiliser tmux sur la machine distante. Dans ce cas, vous pouvez toujours avoir un tuyau cassé, mais si vous reconnectez votre shell et vos applications attendront comme vous les avez laissées.
la source
Les différentes réponses ici sont en conflit en ce qui concerne le chemin exact des fichiers de configuration. Peut-être que c'est différent dans différents Unix? Je suggère de lire les pages de manuel de votre système!
Dans man ssh (1) , recherchez le texte: config . Sur mon système, j'ai le choix entre des fichiers de configuration système ou ceux de cet utilisateur (et les chemins sont étrangement différents).
Dans man ssh_config (5) , recherchez le texte: alive . Sur mon système, il semble que je doive définir ServerAliveInterval et ServerAliveCountMax .
Ce qui a fonctionné pour moi, sur macOS 10.12 Sierra, est de mettre les deux lignes suivantes dans ~ / .ssh / config:
Maintenant, je peux ssh sur mon serveur Ubuntu 16.04 sans déconnexion pendant 20 * 180 secondes = 1 heure. Fait ma journée!
la source
Reconnecter automatiquement ssh après une interruption de sommeil ou une connexion wifi
Installez autossh depuis MacPorts ou Homebrew:
brew install autossh
Ouvrir le terminal et courir
autossh -M 20000 -f [SSH ARGUMENTS GO HERE]
Déconnectez votre wifi ou mettez votre Mac en veille.
Lorsque vous vous reconnectez au wifi, la session ssh se reconnectera automatiquement.
Ssh automatiquement après la connexion
Jon Stacey a écrit un article sur l’activation automatique d’une session SSH lorsque vous vous connectez.
Installez autossh depuis MacPorts ou Homebrew:
brew install autossh
Créez un flux de travail Automator avec un script bash.
la source
Ajoutez ces deux lignes à
/etc/ssh/ssh_config
:la source
Vient de résoudre ce problème, ajoutez les lignes suivantes dans
$HOME/.ssh/config
.Paramètre
TCPKeepAlive no
indique au client de simplement supposer que la connexion est toujours valide jusqu'à preuve du contraire, à la demande de l'utilisateur, ce qui signifie que des ruptures de connexion temporaires lorsque votre terme ssh est inactif en arrière-plan ne tueront pas la connexion.la source