Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
e92ac893
Commit
e92ac893
authored
Sep 04, 2016
by
Marc Cornellà
Committed by
GitHub
Sep 04, 2016
Browse files
Options
Browse Files
Download
Plain Diff
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
Showing
2 changed files
with
66 additions
and
65 deletions
+66
-65
README.md
plugins/ssh-agent/README.md
+38
-0
ssh-agent.plugin.zsh
plugins/ssh-agent/ssh-agent.plugin.zsh
+28
-65
No files found.
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 |
grep
${
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