This commit is contained in:
Pandu E POLUAN 2025-03-04 02:24:45 +09:00 committed by GitHub
commit 20a7726751
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 42 additions and 2 deletions

View File

@ -14,3 +14,10 @@ plugins=(... ssh)
- `ssh_rmhkey`: remove host key from known hosts based on a host section name from `.ssh/config`. - `ssh_rmhkey`: remove host key from known hosts based on a host section name from `.ssh/config`.
- `ssh_load_key`: load SSH key into agent. - `ssh_load_key`: load SSH key into agent.
- `ssh_unload_key`: remove SSH key from agent. - `ssh_unload_key`: remove SSH key from agent.
- `ssh_fingerprint` : calculate fingerprint of specifed key files. It has some options:
- `-md5` : Use MD5 fingerprint instead of SHA256
- `-n` : Don't colorize using ANSI
- `-q` : Don't print filename(s)
- If key files are not specified, defaults to `~/.ssh/authorized_keys`
- `ssh_fp` is an alias to this function

View File

@ -20,7 +20,7 @@ unset _ssh_configfile
############################################################ ############################################################
# Remove host key from known hosts based on a host section # Remove host key from known hosts based on a host section
# name from .ssh/config # name from .ssh/config
function ssh_rmhkey { function ssh_rmhkey() {
local ssh_configfile="$HOME/.ssh/config" local ssh_configfile="$HOME/.ssh/config"
local ssh_host="$1" local ssh_host="$1"
if [[ -z "$ssh_host" ]]; then return; fi if [[ -z "$ssh_host" ]]; then return; fi
@ -42,7 +42,7 @@ function ssh_load_key() {
############################################################ ############################################################
# Remove SSH key from agent # Remove SSH key from agent
function ssh_unload_key { function ssh_unload_key() {
local key="$1" local key="$1"
if [[ -z "$key" ]]; then return; fi if [[ -z "$key" ]]; then return; fi
local keyfile="$HOME/.ssh/$key" local keyfile="$HOME/.ssh/$key"
@ -51,3 +51,36 @@ function ssh_unload_key {
ssh-add -d "$keyfile" ssh-add -d "$keyfile"
fi fi
} }
############################################################
# Calculate SSH key fingerprint
function ssh_fingerprint() {
local fptype
local quiet
local ansi
zmodload zsh/zutil
zparseopts -D -- md5=fptype q=quiet n=ansi
fptype="${fptype[*]}"
if [[ -z $fptype ]]; then
fptype="sha256"
else
fptype="${fptype:1}"
fi
if [[ -z ${ansi[*]} ]]; then
ansi=("\e[1;30m" "\e[0m")
else
ansi=("" "")
fi
local keyfiles=( "$@" )
if [[ ${#keyfiles[@]} == 0 ]]; then keyfiles=( "$HOME/.ssh/authorized_keys" ); fi
local f
for f in "${keyfiles[@]}"; do
if [[ $quiet != "-q" ]]; then printf "${ansi[1]}$f:${ansi[2]}\n"; fi
if ! ssh-keygen -l -E "$fptype" -f "$f"; then return $?; fi
done
return 0
}
alias ssh_fp='ssh_fingerprint'