От man less
:
ESC-u
Выделение поиска Отмены. Выключите выделение строк, соответствующих текущему шаблону поиска. Если выделение уже выключено из-за предыдущей команды ESC-u, снова включите выделение. Любая поисковая команда также снова включит выделение. (Выделение может также быть отключено путем переключения-G опции; в этом случае поисковые команды не снова включают выделение.)
ssh-keygen может сделать ядро работы (генерирующий цифровой отпечаток от открытого ключа), но это автоматически не обработает список нескольких ключей, как обычно находится в authorized_keys
файл.
Вот сценарий, который разделяет ключи, подает их к ssh-keygen и производит таблицу, которую Вы хотите:
#!/bin/sh
# usage: authkeys-report <authorized_keys-file>
set -ue
tmp="$(mktemp -t fingerprint-authkeys.XXXXXXXX)"
trap 'rm -f "$tmp"' 0
while read opts key; do
case "$opts" in
[0-9]*|ssh-dss|ssh-rsa)
# not options, first "word" is part of key
key="$opts $key"
;;
esac
echo "$key" >$tmp
set -- $(ssh-keygen -lf "$tmp")
bits="$1" fingerprint="$2"
set -- $key # Note: will mangle whitespace in the comment
case "$1" in
[0-9]*) # SSH v1 key
type=rsa1
shift 3
;;
ssh-rsa|ssh-dss) # SSH v2 key
type="$1"
shift 2
;;
*)
type=unknown
set --
;;
esac
printf '%-14s %-9s %s %s\n' "$type" "$bits" "$fingerprint" "$*"
done <$1
Сценарий для списка всех отпечатков пальцев от authorized_keys
файл, созданный saravana:
#!/usr/bin/ksh
USER=`whoami`
USER_H=` lsuser -a home $USER |awk -F '=' '{print $2}'`
cat $USER_H/.ssh/authorized_keys| while read line
do
echo $line > /tmp/finger_print
echo "************* Key,finger print details below ***************************"
cat /tmp/finger_print
echo
ssh-keygen -l -f /tmp/finger_print|grep -v not|awk '{print $1" " $2 " " $4}'
if ssh-keygen -l -f /tmp/finger_print|grep "is not a" > /dev/null 2>&1
then
echo "The above key is an Invalid Key,Please correct it"
fi
echo "========================================================================"
rm /tmp/finger_print
done
Если у Вас есть zsh, можно сделать это как остроту:
while read line ; do ssh-keygen -lf =(echo $line); done < .ssh/authorized_keys
/dev/fd/63 не является файлом открытого ключа. [117798] /dev/fd/63 не является файлом с открытым ключом.
почти..... Это должно сработать, но ssh-keygen, кажется, не любит читать непосредственно из сгенерированного fd. Используя временный файл для <( redirection, он работает. Why?
ssh-keygen
в openssh-7.2 (сейчас по крайней мере в Fedora и Ubuntu Xenial) поддерживает чтение нескольких ключей из одного файла. Поэтому простой запуск
# ssh-keygen -l -f ~/.ssh/authorized_keys
2048 SHA256:xh0IVbI... jakuje@jakuje (RSA)
2048 SHA256:xh0IVbI... jakuje@jakuje (RSA)
приводит к желаемому результату.
tmp="$(mktemp -t fingerprint-authkeys)"
должен быть изменен наtmp="$(mktemp -t fingerprint-authkeys.XXX)"
– Stefan 16.09.2010, 12:03mktemp(1)
нужен Xs: FreeBSD, Mac OS X. Но, добавление их не причинит боль, поведение тех не нуждаются в них (они только заканчивают с Xs перед случайным суффиксом). – Chris Johnsen 16.09.2010, 12:49/home/steve/.scripts/key-strength: line 36: $1: unbound variable
– Stefan 16.09.2010, 12:52-l
опция действительно, что я искал! Тем не менее это невероятно, что Вы ничего не можете передать по каналу к ssh-keygen иMUST
имейте файл на диске. – Alexander Pogrebnyak 16.09.2010, 14:40ssh-keygen
с целым файлом. См. мой ответ ниже. – Jakuje 28.08.2016, 14:58