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
Ohmyzsh
Commits
5a9d9553
Unverified
Commit
5a9d9553
authored
Aug 26, 2021
by
Simone Gaiarin
Committed by
GitHub
Aug 26, 2021
Browse files
feat(ssh-agent): allow using external helper to ask for passwords (#7631)
parent
c47ac2d8
Changes
2
Show whitespace changes
Inline
Side-by-side
plugins/ssh-agent/README.md
View file @
5a9d9553
...
@@ -55,6 +55,15 @@ ssh-add -K -c -a /run/user/1000/ssh-auth <identities>
...
@@ -55,6 +55,15 @@ ssh-add -K -c -a /run/user/1000/ssh-auth <identities>
For valid
`ssh-add`
arguments run
`ssh-add --help`
or
`man ssh-add`
.
For valid
`ssh-add`
arguments run
`ssh-add --help`
or
`man ssh-add`
.
----
To set an
**external helper**
to ask for the passwords and possibly store
them in the system keychain use the
`helper`
style. For example:
```
zsh
zstyle :omz:plugins:ssh-agent helper ksshaskpass
```
## Credits
## Credits
Based on code from Joseph M. Reagle: https://www.cygwin.com/ml/cygwin/2001-06/msg00537.html
Based on code from Joseph M. Reagle: https://www.cygwin.com/ml/cygwin/2001-06/msg00537.html
...
...
plugins/ssh-agent/ssh-agent.plugin.zsh
View file @
5a9d9553
...
@@ -27,7 +27,7 @@ function _add_identities() {
...
@@ -27,7 +27,7 @@ function _add_identities() {
# key list found on `ssh-add` man page's DESCRIPTION section
# key list found on `ssh-add` man page's DESCRIPTION section
for
id
in
id_rsa id_dsa id_ecdsa id_ed25519 identity
;
do
for
id
in
id_rsa id_dsa id_ecdsa id_ed25519 identity
;
do
# check if file exists
# check if file exists
[[
-f
"
$HOME
/.ssh/
$id
"
]]
&&
identities+
=
$id
[[
-f
"
$HOME
/.ssh/
$id
"
]]
&&
identities+
=
(
$id
)
done
done
fi
fi
...
@@ -44,13 +44,33 @@ function _add_identities() {
...
@@ -44,13 +44,33 @@ function _add_identities() {
# check for filename match, otherwise try for signature match
# check for filename match, otherwise try for signature match
if
[[
${
loaded_ids
[(I)
$HOME
/.ssh/
$id
]
}
-le
0
]]
;
then
if
[[
${
loaded_ids
[(I)
$HOME
/.ssh/
$id
]
}
-le
0
]]
;
then
sig
=
"
$(
ssh-keygen
-lf
"
$HOME
/.ssh/
$id
"
|
awk
'{print $2}'
)
"
sig
=
"
$(
ssh-keygen
-lf
"
$HOME
/.ssh/
$id
"
|
awk
'{print $2}'
)
"
[[
${
loaded_sigs
[(I)
$sig
]
}
-le
0
]]
&&
not_loaded+
=
"
$HOME
/.ssh/
$id
"
[[
${
loaded_sigs
[(I)
$sig
]
}
-le
0
]]
&&
not_loaded+
=
(
"
$HOME
/.ssh/
$id
"
)
fi
fi
done
done
# abort if no identities need to be loaded
if
[[
${#
not_loaded
}
-eq
0
]]
;
then
return
fi
# pass extra arguments to ssh-add
local
args
local
args
zstyle
-a
:omz:plugins:ssh-agent ssh-add-args args
zstyle
-a
:omz:plugins:ssh-agent ssh-add-args args
[[
-n
"
$not_loaded
"
]]
&&
ssh-add
"
${
args
[@]
}
"
${
^not_loaded
}
# use user specified helper to ask for password (ksshaskpass, etc)
local
helper
zstyle
-s
:omz:plugins:ssh-agent helper helper
if
[[
-n
"
$helper
"
]]
;
then
if
[[
-z
"
${
commands
[
$helper
]
}
"
]]
;
then
echo
"ssh-agent: the helper '
$helper
' has not been found."
else
SSH_ASKPASS
=
"
$helper
"
ssh-add
"
${
args
[@]
}
"
${
^not_loaded
}
< /dev/null
return
$?
fi
fi
ssh-add
"
${
args
[@]
}
"
${
^not_loaded
}
}
}
# Get the filename to store/lookup the environment from
# Get the filename to store/lookup the environment from
...
...
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