Run ssh with ServerAliveInterval 60

So that stalled transfers will be noticed within about 3 minutes,
even if TCPKeepAlive is disabled or doesn't work.

Rather than setting with -o, use -F with another config file,
so that any settings in ~/.ssh/config or /etc/ssh/ssh_config overrides this.
This commit is contained in:
Joey Hess 2016-10-26 16:41:34 -04:00
parent 075602b1df
commit 0ae08947ac
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
5 changed files with 45 additions and 11 deletions

View file

@ -33,6 +33,7 @@ import qualified Git.Url
import Config
import Annex.Path
import Utility.Env
import Utility.Tmp
import Types.CleanupActions
import Git.Env
#ifndef mingw32_HOST_OS
@ -49,13 +50,33 @@ sshOptions (host, port) gc opts = go =<< sshCachingInfo (host, port)
go (Just socketfile, params) = do
prepSocket socketfile
ret params
ret ps = return $ concat
[ ps
, map Param (remoteAnnexSshOptions gc)
, opts
, portParams port
, [Param "-T"]
]
ret ps = do
overideconfigfile <- fromRepo gitAnnexSshConfig
-- We assume that the file content does not change.
-- If it did, a more expensive test would be needed.
liftIO $ unlessM (doesFileExist overideconfigfile) $
viaTmp writeFile overideconfigfile $ unlines
-- ssh expands "~"
[ "Include ~/.ssh/config"
-- ssh will silently skip the file
-- if it does not exist
, "Include /etc/ssh/ssh_config"
-- Everything below this point is only
-- used if there's no setting for it in
-- the above files.
--
-- Make sure that ssh detects stalled
-- connections.
, "ServerAliveInterval 60"
]
return $ concat
[ ps
, [Param "-F", File overideconfigfile]
, map Param (remoteAnnexSshOptions gc)
, opts
, portParams port
, [Param "-T"]
]
{- Returns a filename to use for a ssh connection caching socket, and
- parameters to enable ssh connection caching. -}