Firewalls will often drop idle ssh connections. You (on your client) and/or your server administrator (on your server), can take steps to ensure connections stay alive and thus are not dropped.

IT Security Office's info on this, as of March 2016:

--------------------------------------------------

Traffic Filtering Issues

Problem : ssh connections silently disconnect when left idle, yielding a "broken pipe" or similar message

Root Cause: an idle ssh connection, by default, sends no traffic, which allows the connection to time out in the Managed Firewall state table. The state table cannot have a timeout value longer than the default 300 seconds

Solution/Workaround: ssh can be configured, either on the ssh client or ssh server side, to send periodic keepalive packets.

on the client, in the file "ssh_config" in either /etc/ or /etc/ssh, use the lines:

Host *

  ServerAliveInterval 300

  ServerAliveCountMax 2

on the server, in the file "sshd_config" in either /etc/ or /etc/ssh, use the line:

ClientAliveInterval 300

--------------------------------------------------

Information from Chemistry IT