Why isn't it possible to lower TCP values of running SSH session?

john smith wempwer at gmail.com
Tue Nov 24 09:25:15 AEDT 2015

I am running OpenSSH_6.7p1 on Slackware 14.1 x64.  I haven't modified
a stock config.  On Linux TCP timeouts are controlled by these 3

$ cat /proc/sys/net/ipv4/tcp_keepalive_time \
>  /proc/sys/net/ipv4/tcp_keepalive_intvl \
> /proc/sys/net/ipv4/tcp_keepalive_probes

These are their default values. I modified them to 3, 1, 1
respecitively before establishing a new SSH connection. After
establishing an SSH connection to a machine next to me I unplugged a
network cable on the remote machine and had to wait for 3 seconds for
the SSH session to be terminated by Linux. This is what I
expected. Next, I connected again and while SSH session was already
opened I changed values to their defaults - 7200, 75, 9. After
unplugging a network cable I wasn't disconnected within 3 seconds. It
made me think that it's possible to modify TCP timeouts of opened TCP
sockets such as SSH connections.  However, after connecting to the same
machine again I changed timeout values to 3, 1, 1 again. To my
surpires, after unplugging a network cable on the remote side I wasn't
disconnected within 3 seconds. It seems it's only possible to increase
TCP timeout values when SSH session is already opened but not to lower
them. Why? Is it Linux or OpenSSH thing?

<wempwer at gmail.com>

More information about the openssh-unix-dev mailing list