diff options
author | Joey Hess <joey@kitenet.net> | 2014-04-29 18:08:10 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-04-29 18:08:10 -0400 |
commit | c963d19b6b3150de90783741514143c5145a28a9 (patch) | |
tree | 4a4c4d56356353af9c3c8d0a7e946e4c8df04f84 /Annex/Ssh.hs | |
parent | e7bb1e85fbfa7b691ed4248cc0359a87cb2fb71e (diff) |
support being run by ssh as ssh-askpass replacement
To use, set GIT_ANNEX_SSHASKPASS to point to a fifo or regular file
(FIFO is better, avoids touching disk or multiple readers) that contains
the password. Then set SSH_ASKPASS=git-annex, and when ssh runs it, it will
tell ssh the password.
This is not yet used..
Diffstat (limited to 'Annex/Ssh.hs')
-rw-r--r-- | Annex/Ssh.hs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Annex/Ssh.hs b/Annex/Ssh.hs index 159480121..21bb83e28 100644 --- a/Annex/Ssh.hs +++ b/Annex/Ssh.hs @@ -16,6 +16,8 @@ module Annex.Ssh ( sshCachingTo, inRepoWithSshCachingTo, runSshCaching, + sshAskPassEnv, + runSshAskPass ) where import qualified Data.Map as M @@ -230,7 +232,7 @@ sshReadPort params = (port, reverse args) {- When this env var is set, git-annex runs ssh with parameters - to use the socket file that the env var contains. - - - This is a workaround for GiT_SSH not being able to contain + - This is a workaround for GIT_SSH not being able to contain - additional parameters to pass to ssh. -} sshCachingEnv :: String sshCachingEnv = "GIT_ANNEX_SSHCACHING" @@ -268,8 +270,17 @@ sshCachingTo remote g where uncached = return g -runSshCaching :: [String] -> String -> IO () +runSshCaching :: [String] -> FilePath -> IO () runSshCaching args sockfile = do let args' = toCommand (sshConnectionCachingParams sockfile) ++ args let p = proc "ssh" args' exitWith =<< waitForProcess . processHandle =<< createProcess p + +{- When this env var is set, git-annex is being used as a ssh-askpass + - program, and should read the password from the specified location, + - and output it for ssh to read. -} +sshAskPassEnv :: String +sshAskPassEnv = "GIT_ANNEX_SSHASKPASS" + +runSshAskPass :: FilePath -> IO () +runSshAskPass passfile = putStrLn =<< readFile passfile |