mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-08-07 06:08:39 +02:00
Merge 2d32d82e76 into 0912e05c05
This commit is contained in:
commit
3513e1f990
2 changed files with 61 additions and 1 deletions
|
|
@ -99,6 +99,34 @@ ssh-add -K -c -a /run/user/1000/ssh-auth <identities>
|
|||
|
||||
For valid `ssh-add` arguments run `ssh-add --help` or `man ssh-add`.
|
||||
|
||||
### `override-agent-socket-path`
|
||||
|
||||
If you want to say goodbye to (for example) gnome-keyring, you will need a fixed,
|
||||
constant path to SSH-agent socket.
|
||||
By default its name is randomly generated in form of `$TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>`.
|
||||
|
||||
To override the `$SSH_AUTH_SOCK` path, use `override-agent-socket-path` style.
|
||||
|
||||
```zsh
|
||||
zstyle :omz:plugins:ssh-agent override-agent-socket-path yes
|
||||
zstyle :omz:plugins:ssh-agent ssh_agent_sock_path "YOUR_CUSTOM_SOCKET_PATH"
|
||||
```
|
||||
|
||||
Of course you should double-quote the path itself.
|
||||
There are few builtin defaults for Linux and MacOS, so you could simply add:
|
||||
|
||||
```zsh
|
||||
zstyle :omz:plugins:ssh-agent override-agent-socket-path yes
|
||||
```
|
||||
|
||||
These are the defaults:
|
||||
* Linux:
|
||||
The default `$SSH_AUTH_SOCK` will be `"/var/run/user/<YOUR_UID>/ssh-agent"`
|
||||
* MacOS:
|
||||
The default `$SSH_AUTH_SOCK` will be `$TMPDIR/ssh-agent.socket"` or `/tmp/ssh-agent.socket"` if `$TMPDIR` is not set for some reason.
|
||||
* On other systems the socket file will be placed in `"$HOME/.ssh/ssh-agent.socket"`
|
||||
|
||||
|
||||
### Powerline 10k specific settings
|
||||
|
||||
Powerline10k has an instant prompt setting that doesn't like when this plugin
|
||||
|
|
|
|||
|
|
@ -18,13 +18,45 @@ function _start_agent() {
|
|||
return 1
|
||||
fi
|
||||
|
||||
# ssh-agent extra launch flags
|
||||
local -a agent_extra_flags
|
||||
|
||||
# override $SSH_AUTH_SOCK path option
|
||||
if zstyle -t :omz:plugins:ssh-agent override-agent-socket-path; then
|
||||
local ssh_agent_sock_path
|
||||
zstyle -s :omz:plugins:ssh-agent ssh_agent_sock_path ssh_agent_sock_path
|
||||
|
||||
# set fallback path by $OSTYPE
|
||||
if [[ -z "$ssh_agent_sock_path" ]]; then
|
||||
if [[ "$OSTYPE" == "linux"* ]]; then
|
||||
ssh_agent_sock_path="/var/run/user/$UID/ssh-agent"
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
ssh_agent_sock_path="${TMPDIR:-/tmp}/ssh-agent.socket"
|
||||
else
|
||||
ssh_agent_sock_path="$HOME/.ssh/ssh-agent.socket"
|
||||
fi
|
||||
fi
|
||||
|
||||
# check the socket dir and create if needed
|
||||
local socket_dir="${ssh_agent_sock_path:h}"
|
||||
if [[ ! -d "$socket_dir" ]]; then
|
||||
mkdir -p "$socket_dir" || \
|
||||
{ echo "Error: can't create ssh socket parent directory." && return 1 }
|
||||
chmod 700 "$socket_dir" || \
|
||||
{ echo "Error: can't change permissions of the ssh socket parent directory." && return 1 }
|
||||
fi
|
||||
|
||||
# set extra flags array
|
||||
agent_extra_flags=(-a "$ssh_agent_sock_path")
|
||||
fi
|
||||
|
||||
# Set a maximum lifetime for identities added to ssh-agent
|
||||
local lifetime
|
||||
zstyle -s :omz:plugins:ssh-agent lifetime lifetime
|
||||
|
||||
# start ssh-agent and setup environment
|
||||
zstyle -t :omz:plugins:ssh-agent quiet || echo >&2 "Starting ssh-agent ..."
|
||||
ssh-agent -s ${lifetime:+-t} ${lifetime} | sed '/^echo/d' >! "$ssh_env_cache"
|
||||
ssh-agent "${agent_extra_flags[@]}" -s ${lifetime:+-t} ${lifetime} | sed '/^echo/d' >! "$ssh_env_cache"
|
||||
chmod 600 "$ssh_env_cache"
|
||||
. "$ssh_env_cache" > /dev/null
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue