mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	By default, ssh-agent stores identities forever. It has an option to set a maximum lifetime for identites (useful to expire passphrase protected keys). Allow this option to be set using: zstyle :omz:plugins:ssh-agent lifetime <time>
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #
 | |
| # INSTRUCTIONS
 | |
| #
 | |
| #   To enabled 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 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=$HOME/.ssh/environment-$HOST
 | |
| local _plugin__forwarding
 | |
| 
 | |
| function _plugin__start_agent()
 | |
| {
 | |
|   local -a identities
 | |
|   local lifetime
 | |
|   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
 | |
| 
 | |
|   # load identies
 | |
|   zstyle -a :omz:plugins:ssh-agent identities identities 
 | |
|   echo starting ssh-agent...
 | |
| 
 | |
|   /usr/bin/ssh-add $HOME/.ssh/${^identities}
 | |
| }
 | |
| 
 | |
| # 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 -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
 | |
|     _plugin__start_agent;
 | |
|   }
 | |
| else
 | |
|   _plugin__start_agent;
 | |
| fi
 | |
| 
 | |
| # tidy up after ourselves
 | |
| unfunction _plugin__start_agent
 | |
| unset _plugin__forwarding
 | |
| unset _plugin__ssh_env
 | |
| 
 |