Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
e92ac893
Commit
e92ac893
authored
Sep 04, 2016
by
Marc Cornellà
Committed by
GitHub
Sep 04, 2016
Browse files
Merge pull request #5328 from mcornella/ssh-agent-refactor
Refactor of ssh-agent plugin
parents
7d5bb2a3
53c3567c
Changes
2
Hide whitespace changes
Inline
Side-by-side
plugins/ssh-agent/README.md
0 → 100644
View file @
e92ac893
# ssh-agent plugin
This plugin starts automatically
`ssh-agent`
to set up and load whichever
credentials you want for ssh connections.
To enable it, add
`ssh-agent`
to your plugins:
```
zsh
plugins
=(
... ssh-agent
)
```
## Instructions
To enable
**agent forwarding support**
add the following to your zshrc file:
```
zsh
zstyle :omz:plugins:ssh-agent agent-forwarding on
```
To
**load multiple identities**
use the
`identities`
style, For example:
```
zsh
zstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2 id_github
```
To
**set the maximum lifetime of the identities**
, use the
`lifetime`
style.
The lifetime may be specified in seconds or as described in sshd_config(5)
(see _TIME FORMATS_). If left unspecified, the default lifetime is forever.
```
zsh
zstyle :omz:plugins:ssh-agent lifetime 4h
```
## Credits
Based on code from Joseph M. Reagle: http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html
Agent-forwarding support based on ideas from Florent Thoumie and Jonas Pfenniger
plugins/ssh-agent/ssh-agent.plugin.zsh
View file @
e92ac893
#
typeset
_agent_forwarding _ssh_env_cache
# INSTRUCTIONS
#
# To enable agent forwarding support add the following to
# your .zshrc file:
#
# zstyle :omz:plugins:ssh-agent agent-forwarding on
#
# To load multiple identities use the identities style, For
# example:
#
# zstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2 id_github
#
# To set the maximum lifetime of the identities, use the
# lifetime style. The lifetime may be specified in seconds
# or as described in sshd_config(5) (see TIME FORMATS)
# If left unspecified, the default lifetime is forever.
#
# zstyle :omz:plugins:ssh-agent lifetime 4h
#
# CREDITS
#
# Based on code from Joseph M. Reagle
# http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html
#
# Agent forwarding support based on ideas from
# Florent Thoumie and Jonas Pfenniger
#
local
_plugin__ssh_env
function
_start_agent
()
{
local
_plugin__forwarding
local
lifetime
local
-a
identities
function
_plugin__start_agent
()
# start ssh-agent and setup environment
{
zstyle
-s
:omz:plugins:ssh-agent lifetime lifetime
local
-a
identities
local
lifetime
zstyle
-s
:omz:plugins:ssh-agent lifetime lifetime
# start ssh-agent and setup environment
ssh-agent
-s
${
lifetime
:+-t
}
${
lifetime
}
|
sed
's/^echo/#echo/'
>!
$_ssh_env_cache
/usr/bin/env ssh-agent
${
lifetime
:+-t
}
${
lifetime
}
|
sed
's/^echo/#echo/'
>!
${
_plugin__ssh_env
}
chmod
600
$_ssh_env_cache
chmod
600
${
_plugin__ssh_env
}
.
$_ssh_env_cache
>
/dev/null
.
${
_plugin__ssh_env
}
>
/dev/null
# load identies
# load identies
zstyle
-a
:omz:plugins:ssh-agent identities identities
zstyle
-a
:omz:plugins:ssh-agent identities identities
echo
starting ssh-agent...
/usr/bin/ssh-add
$HOME
/.ssh/
${
^identities
}
echo
starting ssh-agent...
ssh-add
$HOME
/.ssh/
${
^identities
}
}
}
# Get the filename to store/lookup the environment from
# Get the filename to store/lookup the environment from
if
((
$+
commands[scutil]
))
;
then
_ssh_env_cache
=
"
$HOME
/.ssh/environment-
$SHORT_HOST
"
# It's OS X!
_plugin__ssh_env
=
"
$HOME
/.ssh/environment-
$(
scutil
--get
ComputerName
)
"
else
_plugin__ssh_env
=
"
$HOME
/.ssh/environment-
$HOST
"
fi
# test if agent-forwarding is enabled
# test if agent-forwarding is enabled
zstyle
-b
:omz:plugins:ssh-agent agent-forwarding _
plugin_
_forwarding
zstyle
-b
:omz:plugins:ssh-agent agent-forwarding _
agent
_forwarding
if
[[
${
_plugin__forwarding
}
==
"yes"
&&
-n
"
$SSH_AUTH_SOCK
"
]]
;
then
# Add a nifty symlink for screen/tmux if
agent
forwarding
if
[[
$_
agent
_
forwarding
==
"yes"
&&
-n
"
$SSH_AUTH_SOCK
"
]]
;
then
[[
-L
$SSH_AUTH_SOCK
]]
||
ln
-sf
"
$SSH_AUTH_SOCK
"
/tmp/ssh-agent-
$USER
-screen
# Add a nifty symlink for screen/tmux if agent forwarding
[[
-L
$SSH_AUTH_SOCK
]]
||
ln
-sf
"
$SSH_AUTH_SOCK
"
/tmp/ssh-agent-
$USER
-screen
elif
[
-f
"
$
{
_plugin_
_ssh_env
}
"
]
;
then
elif
[
[
-f
"
$_ssh_env
_cache
"
]
]
;
then
# Source SSH settings, if applicable
# Source SSH settings, if applicable
.
$
{
_plugin_
_ssh_env
}
>
/dev/null
.
$_ssh_env
_cache
>
/dev/null
ps
x |
gre
p
$
{
SSH_AGENT_PID
}
|
grep
ssh-agent
>
/dev/null
||
{
ps
-o
cmd
-
p
$SSH_AGENT_PID
|
grep
-q
ssh-agent
||
{
_plugin_
_start_agent
;
_start_agent
}
}
else
else
_plugin_
_start_agent
;
_start_agent
fi
fi
# tidy up after ourselves
# tidy up after ourselves
unfunction _plugin__start_agent
unset
_agent_forwarding _ssh_env_cache
unset
_plugin__forwarding
unfunction _start_agent
unset
_plugin__ssh_env
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment