A PCRE internal error occured. This might be caused by a faulty plugin
====== Differences ====== This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
tricks:keep-ssh-alive [2013/12/17 14:19] admin created |
tricks:keep-ssh-alive [2015/08/02 02:42] (current) admin [Choose Your Level] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Keeping Your ssh Sessions Alive ====== | ====== Keeping Your ssh Sessions Alive ====== | ||
- | You might notice that when use the terminal to ssh to a remote host, if you stay inactive for too long, your connection will expire, leaving you with an unresponsive prompt... | + | You might notice that when use the terminal to ssh to a remote host, if you stay inactive for too long, your connection will expire, leaving you with an unresponsive prompt... You have been disconnected! |
This can also be observed when you choose to mount a remote server from within the Desktop environment: | This can also be observed when you choose to mount a remote server from within the Desktop environment: | ||
{{ :tricks:mate:connect-to-server-menu.png?direct&200 |}} | {{ :tricks:mate:connect-to-server-menu.png?direct&200 |}} | ||
{{ :tricks:mate:connect-to-server-ssh.png?direct&200 |}} | {{ :tricks:mate:connect-to-server-ssh.png?direct&200 |}} | ||
+ | |||
+ | After a few minutes, the connected server's windows will become unresponsive. | ||
+ | |||
+ | ==== ssh Session Timeout ==== | ||
+ | This is due to the fact that, for obvious security reasons, most remote systems will timeout any inactive ssh session after a short time. How annoying for power users like us! | ||
+ | |||
+ | ==== Choose Your Level ==== | ||
+ | The solution to avoid this is to have your ssh session sending a "ServerAlive" signal on a regular basis, telling the remote system you're still there. | ||
+ | |||
+ | The timeout between signals sent can be controled with the ServerAliveInterval parameter, it can be set at three different levels: | ||
+ | * Global level: will affect all ssh sessions made from your system | ||
+ | * User level: will affect all ssh sessions initiated by a specific user | ||
+ | * Host level: will a specific ssh session timeout per host, for a specific user | ||
+ | |||
+ | |||
+ | === Global === | ||
+ | To modify the **global** session timeout on your system, edit the /etc/ssh_config file: | ||
+ | <code> | ||
+ | sudo nano /etc/ssh/ssh_config | ||
+ | </code> | ||
+ | and add this line at the end of the file (if it does not already contain the ServerAliveInterval directive): | ||
+ | <code> | ||
+ | ServerAliveInterval 60 | ||
+ | </code> | ||
+ | |||
+ | === Per User === | ||
+ | To modify a **user**'s session timeout, edit the /home/<username>/.ssh/config file | ||
+ | <code> | ||
+ | [sudo] nano /home/<username>/.ssh/config | ||
+ | </code> | ||
+ | |||
+ | Add this line (or modify the existing one if any): | ||
+ | <code> | ||
+ | Host * | ||
+ | ServerAliveInterval 60 | ||
+ | </code> | ||
+ | Please note that the second line is indented with a space! | ||
+ | |||
+ | === Per Host === | ||
+ | You could determine **per host** intervals by specifying their name in /home/<username>/.ssh/config : | ||
+ | <code> | ||
+ | Host *hostname.tld | ||
+ | ServerAliveInterval 60 | ||
+ | </code> |