summaryrefslogtreecommitdiff
path: root/plugins/ssh-agent
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ssh-agent')
-rw-r--r--plugins/ssh-agent/ssh-agent.plugin.zsh17
1 files changed, 10 insertions, 7 deletions
diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh
index 83548648b..becd5ea17 100644
--- a/plugins/ssh-agent/ssh-agent.plugin.zsh
+++ b/plugins/ssh-agent/ssh-agent.plugin.zsh
@@ -39,13 +39,16 @@ function _add_identities() {
return
fi
- # add default keys if no identities were set up via zstyle
- # this is to mimic the call to ssh-add with no identities
- if [[ ${#identities} -eq 0 ]]; then
- # key list found on `ssh-add` man page's DESCRIPTION section
- for id in id_rsa id_dsa id_ecdsa id_ed25519 id_ed25519_sk identity; do
- # check if file exists
- [[ -f "$HOME/.ssh/$id" ]] && identities+=($id)
+ # If no keys specified in zstyle, add default keys.
+ # Mimics calling ssh-add with no arguments.
+ if [[ ${#identities[@]} -eq 0 ]]; then
+ # Iterate over files in .ssh folder.
+ for file in "$HOME/.ssh"/*; do
+ # Check if file is a regular file and starts with "-----BEGIN OPENSSH PRIVATE KEY-----".
+ if [[ -f "$file" && $(command head -n 1 "$file") =~ ^-----BEGIN\ OPENSSH\ PRIVATE\ KEY----- ]]; then
+ # Add filename (without path) to identities array.
+ identities+=("${file##*/}")
+ fi
done
fi