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
#
# 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
#
typeset
_agent_forwarding _ssh_env_cache
local
_plugin__ssh_env
local
_plugin__forwarding
function
_start_agent
()
{
local
lifetime
local
-a
identities
function
_plugin__start_agent
()
{
local
-a
identities
local
lifetime
zstyle
-s
:omz:plugins:ssh-agent lifetime lifetime
# start ssh-agent and setup environment
zstyle
-s
:omz:plugins:ssh-agent lifetime lifetime
# start ssh-agent and setup environment
/usr/bin/env ssh-agent
${
lifetime
:+-t
}
${
lifetime
}
|
sed
's/^echo/#echo/'
>!
${
_plugin__ssh_env
}
chmod
600
${
_plugin__ssh_env
}
.
${
_plugin__ssh_env
}
>
/dev/null
ssh-agent
-s
${
lifetime
:+-t
}
${
lifetime
}
|
sed
's/^echo/#echo/'
>!
$_ssh_env_cache
chmod
600
$_ssh_env_cache
.
$_ssh_env_cache
>
/dev/null
# load identies
zstyle
-a
:omz:plugins:ssh-agent identities identities
echo
starting ssh-agent...
# load identies
zstyle
-a
:omz:plugins:ssh-agent identities identities
/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
if
((
$+
commands[scutil]
))
;
then
# It's OS X!
_plugin__ssh_env
=
"
$HOME
/.ssh/environment-
$(
scutil
--get
ComputerName
)
"
else
_plugin__ssh_env
=
"
$HOME
/.ssh/environment-
$HOST
"
fi
_ssh_env_cache
=
"
$HOME
/.ssh/environment-
$SHORT_HOST
"
# test if agent-forwarding is enabled
zstyle
-b
:omz:plugins:ssh-agent agent-forwarding _
plugin_
_forwarding
if
[[
${
_plugin__forwarding
}
==
"yes"
&&
-n
"
$SSH_AUTH_SOCK
"
]]
;
then
# 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
# Source SSH settings, if applicable
.
$
{
_plugin_
_ssh_env
}
>
/dev/null
ps
x |
gre
p
$
{
SSH_AGENT_PID
}
|
grep
ssh-agent
>
/dev/null
||
{
_plugin_
_start_agent
;
}
zstyle
-b
:omz:plugins:ssh-agent agent-forwarding _
agent
_forwarding
if
[[
$_
agent
_
forwarding
==
"yes"
&&
-n
"
$SSH_AUTH_SOCK
"
]]
;
then
# 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
"
$_ssh_env
_cache
"
]
]
;
then
# Source SSH settings, if applicable
.
$_ssh_env
_cache
>
/dev/null
ps
-o
cmd
-
p
$SSH_AGENT_PID
|
grep
-q
ssh-agent
||
{
_start_agent
}
else
_plugin_
_start_agent
;
_start_agent
fi
# tidy up after ourselves
unfunction _plugin__start_agent
unset
_plugin__forwarding
unset
_plugin__ssh_env
unset
_agent_forwarding _ssh_env_cache
unfunction _start_agent
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