Here is a situation which I noticed. I have a server to which I login via SSH and when I do it from lan then things work perfectly and I have noticed that even if the connection is idle (i.e. I am not doing any thing on SSH session just logged in) the connection is alive for a long time, but if I do an SSH on same server from internet then the connection after some time dies.The server is a Ubuntu 10.04 server edition server.What can be possible reason for this?
2 Answers
Enable keepalives in your ssh client, your firewall/router is killing the idle connection.
I have ServerAliveInterval 59
in ~/.ssh/config
for openssh client.
-
Ok I do not have any such line as you mentioned since the server is in a corporate data centre is it possible for the sysadmin to detect an idle connection in this situation given the fact that to this server I am the only person who has SSH access to it.– BondJan 27, 2011 at 7:10
-
Just as clarification; consumer grade hardware with little memory kills connections that haven't been active for a while. TCP keepalives can cause disconnects, so you can also, if you use something like screen or tmux, put a clock in your status bar so you have trafic all the time :)– HalfgaarJan 27, 2011 at 10:38
You could look at the TCPKeepAlive option in sshd_config on the server. It looks like if this is enabled you will see more disconnections (which seems a bit counter intuitive until you read the doc) as any route changes between you and the server will result in a disconnection. That is unlikely to happen on the LAN, but fairly likely across the internet.