Skip to content

Commit

Permalink
Merge pull request #352 from ogrim/sshagent
Browse files Browse the repository at this point in the history
Adding script to enable SSH-agent #193
  • Loading branch information
MartiUK committed Dec 18, 2014
2 parents bbbda14 + ad4a210 commit 11753fd
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
6 changes: 6 additions & 0 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ For example there is one defined for you `alias e.=explorer .`

All aliases will be saved in `/config/aliases` file

### SSH Agent

To start SSH agent simply call `agent`, which is in the `bin` folder.

If you want to run SSH agent on startup, uncomment the line in `/vendor/init.bat`so it says `@call "%CMDER_ROOT%/bin/agent.cmd"`.

## Todo

1. Complete PowerShell compatibility.
Expand Down
46 changes: 46 additions & 0 deletions bin/agent.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
@ECHO OFF

REM Set default sock file
SET SSH_AUTH_SOCK=/tmp/ssh-agent.sock

REM Check socket is available
IF NOT EXIST "%TMP%\ssh-agent.sock" GOTO:RUNAGENT

REM Check if an ssh-agent is running
FOR /f "tokens=*" %%I IN ('ps ^| grep ssh-agent ^| sed "s/^ *\([0-9]\+\) .*/\1/"') DO SET VAR=%%I
IF "%VAR%" == "" GOTO:RUNAGENT

REM Check if socket file is valid
ssh-add -l 1> NUL 2>&1
IF ERRORLEVEL 1 GOTO:RUNAGENT
GOTO:ADDKEYS

:RUNAGENT
REM Remove old socket file
rm -f /tmp/ssh-agent.sock

REM Run ssh-agent and save (last) PID in VAR
SET VAR=
FOR /f "tokens=*" %%J IN ('ssh-agent -a /tmp/ssh-agent.sock') DO FOR /f "tokens=*" %%K IN ('echo %%J ^| grep "SSH_AGENT_PID" ^| sed "s/^SSH_AGENT_PID=\([0-9]\+\); .*/\1/"') DO SET VAR=%%K

:ADDKEYS
SET SSH_AUTH_PID=%VAR%

REM Check if ssh keys are known
SET KEYS=
FOR /f "tokens=*" %%I IN ('DIR /B "%HOME%\.ssh\*_rsa"') DO CALL:CHECKKEY %%I

REM Add missing ssh keys at once
IF NOT "%KEYS%" == "" ssh-add %KEYS%
GOTO:END

REM Functions
REM Check if ssh key has to be added
:CHECKKEY
SET VAR=
FOR /f "tokens=*" %%J IN ('ssh-add -l ^| grep "%1"') DO SET VAR=%%J
IF "%VAR%" == "" SET KEYS='%HOME%\.ssh\%1' %KEYS%
GOTO:EOF

:END
@ECHO ON
2 changes: 2 additions & 0 deletions vendor/init.bat
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,5 @@
@cd /d "%HOME%"
)
)

:: @call "%CMDER_ROOT%/bin/agent.cmd"

0 comments on commit 11753fd

Please sign in to comment.