blob: 085e71fa1c0b445b38a8a6655e0cb68151a1ec60 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
############################################################
# Take all host sections in .ssh/config and offer them for
# completion as hosts (e.g. for ssh, rsync, scp and the like)
# Filter out wildcard host sections.
_ssh_configfile="$HOME/.ssh/config"
if [[ -f "$_ssh_configfile" ]]; then
_hosts=($(egrep '^Host.*' "$_ssh_configfile" | awk '{print $2}' | grep -v '^*' | sed -e 's/\.*\*$//'))
zstyle ':completion:*:hosts' hosts $_hosts
unset _hosts
fi
unset _ssh_configfile
############################################################
# Remove host key from known hosts based on a host section
# name from .ssh/config
function ssh_rmhkey {
local ssh_configfile="$HOME/.ssh/config"
local ssh_host="$1"
if [[ -z "$ssh_host" ]]; then return; fi
ssh-keygen -R $(grep -A10 "$ssh_host" "$ssh_configfile" | grep -i HostName | head -n 1 | awk '{print $2}')
}
compctl -k hosts ssh_rmhkey
############################################################
# Load SSH key into agent
function ssh_load_key() {
local key="$1"
if [[ -z "$key" ]]; then return; fi
local keyfile="$HOME/.ssh/$key"
local keysig=$(ssh-keygen -l -f "$keyfile")
if ( ! ssh-add -l | grep -q "$keysig" ); then
ssh-add "$keyfile"
fi
}
############################################################
# Remove SSH key from agent
function ssh_unload_key {
local key="$1"
if [[ -z "$key" ]]; then return; fi
local keyfile="$HOME/.ssh/$key"
local keysig=$(ssh-keygen -l -f "$keyfile")
if ( ssh-add -l | grep -q "$keysig" ); then
ssh-add -d "$keyfile"
fi
}
|