• Nuno Goncalves's avatar
    ssh-agent: improvements (#6309) · a2062714
    Nuno Goncalves authored
    * ssh-agent: lock this script with a mkdir style mutex
    
    This script is a kind of singleton pattern and is not reentrant.
    If several shells are oppened in a fast sequence, then several
    independent ssh-agents would be created, which is not acceptable.
    A mutex is required.
    Signed-off-by: 's avatarNuno Goncalves <nunojpg@gmail.com>
    
    * ssh-agent: only start agent if .ssh dir exists
    
    To use the same profile system-wide, it might happen
    that the .ssh directory does not exist
    (typically $HOME/.ssh/). This would trigger a error.
    
    Creating the directory would be a option, but it
    usually will not make sense to do so because it means
    the user doesn't have ssh keys or config.
    Signed-off-by: 's avatarNuno Goncalves <nunojpg@gmail.com>
    
    * ssh-agent: adds lazy option to disable key loading on start
    
    Option is documented on updated README.md
    Signed-off-by: 's avatarNuno Goncalves <nunojpg@gmail.com>
    
    * ssh-agent: simplify agent-forwarding checking
    Signed-off-by: 's avatarNuno Goncalves <nunojpg@gmail.com>
    Co-authored-by: 's avatarRobby Russell <robby@planetargon.com>
    a2062714

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:

plugins=(... ssh-agent)

Settings

IMPORTANT: put these settings before the line that sources oh-my-zsh

To enable agent forwarding support add the following to your zshrc file:

zstyle :omz:plugins:ssh-agent agent-forwarding on

To NOT load any identities on start use the lazy style. This is particularly usefull when combined with the AddKeysToAgent (available from OpenSSH 7.2), since it allows to enter the password only on first use.

zstyle :omz:plugins:ssh-agent lazy yes

To load multiple identities use the identities style. This have no effect if lazy is enabled.

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

To pass arguments to the ssh-add command that adds the identities on startup, use the ssh-add-args setting. You can pass multiple arguments separated by spaces:

zstyle :omz:plugins:ssh-agent ssh-add-args -K -c -a /run/user/1000/ssh-auth

These will then be passed the the ssh-add call as if written directly. The example above will turn into:

ssh-add -K -c -a /run/user/1000/ssh-auth <identities>

For valid ssh-add arguments run ssh-add --help or man ssh-add.

Credits

Based on code from Joseph M. Reagle: https://www.cygwin.com/ml/cygwin/2001-06/msg00537.html

Agent-forwarding support based on ideas from Florent Thoumie and Jonas Pfenniger