Fix zsh config inclusion
This commit is contained in:
		
							
								
								
									
										40
									
								
								zsh/.oh-my-zsh_old/plugins/ssh-agent/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								zsh/.oh-my-zsh_old/plugins/ssh-agent/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| # 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 | ||||
|  | ||||
| **IMPORTANT: put these settings _before_ the line that sources oh-my-zsh** | ||||
|  | ||||
| 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: https://www.cygwin.com/ml/cygwin/2001-06/msg00537.html | ||||
|  | ||||
| Agent-forwarding support based on ideas from Florent Thoumie and Jonas Pfenniger | ||||
							
								
								
									
										82
									
								
								zsh/.oh-my-zsh_old/plugins/ssh-agent/ssh-agent.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								zsh/.oh-my-zsh_old/plugins/ssh-agent/ssh-agent.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | ||||
| typeset _agent_forwarding _ssh_env_cache | ||||
|  | ||||
| function _start_agent() { | ||||
| 	local lifetime | ||||
| 	zstyle -s :omz:plugins:ssh-agent lifetime lifetime | ||||
|  | ||||
| 	# start ssh-agent and setup environment | ||||
| 	echo Starting ssh-agent... | ||||
| 	ssh-agent -s ${lifetime:+-t} ${lifetime} | sed 's/^echo/#echo/' >! $_ssh_env_cache | ||||
| 	chmod 600 $_ssh_env_cache | ||||
| 	. $_ssh_env_cache > /dev/null | ||||
| } | ||||
|  | ||||
| function _add_identities() { | ||||
| 	local id line sig lines | ||||
| 	local -a identities loaded_sigs loaded_ids not_loaded | ||||
| 	zstyle -a :omz:plugins:ssh-agent identities identities | ||||
|  | ||||
| 	# check for .ssh folder presence | ||||
| 	if [[ ! -d $HOME/.ssh ]]; then | ||||
| 		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 identity; do | ||||
| 			# check if file exists | ||||
| 			[[ -f "$HOME/.ssh/$id" ]] && identities+=$id | ||||
| 		done | ||||
| 	fi | ||||
|  | ||||
| 	# get list of loaded identities' signatures and filenames | ||||
| 	if lines=$(ssh-add -l); then | ||||
| 		for line in ${(f)lines}; do | ||||
| 			loaded_sigs+=${${(z)line}[2]} | ||||
| 			loaded_ids+=${${(z)line}[3]} | ||||
| 		done | ||||
| 	fi | ||||
|  | ||||
| 	# add identities if not already loaded | ||||
| 	for id in $identities; do | ||||
| 		# check for filename match, otherwise try for signature match | ||||
| 		if [[ ${loaded_ids[(I)$HOME/.ssh/$id]} -le 0 ]]; then | ||||
| 			sig="$(ssh-keygen -lf "$HOME/.ssh/$id" | awk '{print $2}')" | ||||
| 			[[ ${loaded_sigs[(I)$sig]} -le 0 ]] && not_loaded+="$HOME/.ssh/$id" | ||||
| 		fi | ||||
| 	done | ||||
|  | ||||
| 	[[ -n "$not_loaded" ]] && ssh-add ${^not_loaded} | ||||
| } | ||||
|  | ||||
| # Get the filename to store/lookup the environment from | ||||
| _ssh_env_cache="$HOME/.ssh/environment-$SHORT_HOST" | ||||
|  | ||||
| # test if agent-forwarding is enabled | ||||
| zstyle -b :omz:plugins:ssh-agent agent-forwarding _agent_forwarding | ||||
|  | ||||
| if [[ $_agent_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 "$_ssh_env_cache" ]]; then | ||||
| 	# Source SSH settings, if applicable | ||||
| 	. $_ssh_env_cache > /dev/null | ||||
| 	if [[ $USER == "root" ]]; then | ||||
| 		FILTER="ax" | ||||
| 	else | ||||
| 		FILTER="x" | ||||
| 	fi | ||||
| 	ps $FILTER | grep ssh-agent | grep -q $SSH_AGENT_PID || { | ||||
| 		_start_agent | ||||
| 	} | ||||
| else | ||||
| 	_start_agent | ||||
| fi | ||||
|  | ||||
| _add_identities | ||||
|  | ||||
| # tidy up after ourselves | ||||
| unset _agent_forwarding _ssh_env_cache | ||||
| unfunction _start_agent _add_identities | ||||
		Reference in New Issue
	
	Block a user