Учитывая ключи ~/.ssh/authorized_keys формат, можно ли определить ключевую силу легко?

От man less:

ESC-u

Выделение поиска Отмены. Выключите выделение строк, соответствующих текущему шаблону поиска. Если выделение уже выключено из-за предыдущей команды ESC-u, снова включите выделение. Любая поисковая команда также снова включит выделение. (Выделение может также быть отключено путем переключения-G опции; в этом случае поисковые команды не снова включают выделение.)

17
16.09.2010, 02:32
5 ответов

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
17
27.01.2020, 19:46
  • 1
    tmp="$(mktemp -t fingerprint-authkeys)" должен быть изменен на tmp="$(mktemp -t fingerprint-authkeys.XXX)" –  Stefan 16.09.2010, 12:03
  • 2
    @Stefan: Не все версии mktemp(1) нужен Xs: FreeBSD, Mac OS X. Но, добавление их не причинит боль, поведение тех не нуждаются в них (они только заканчивают с Xs перед случайным суффиксом). –  Chris Johnsen 16.09.2010, 12:49
  • 3
    , о.. :) прохладный... я пытался запустить скрипт на своем поле дуги... продолжал говорить /home/steve/.scripts/key-strength: line 36: $1: unbound variable –  Stefan 16.09.2010, 12:52
  • 4
    Спасибо, -l опция действительно, что я искал! Тем не менее это невероятно, что Вы ничего не можете передать по каналу к ssh-keygen и MUST имейте файл на диске. –  Alexander Pogrebnyak 16.09.2010, 14:40
  • 5
    Обратите внимание на то, что для openssh-7.2, Вы не должны больше делать этого волшебства, и можно просто питаться ssh-keygen с целым файлом. См. мой ответ ниже. –  Jakuje 28.08.2016, 14:58

Сценарий для списка всех отпечатков пальцев от 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
3
27.01.2020, 19:46

Если у Вас есть zsh, можно сделать это как остроту:

while read line ; do ssh-keygen -lf =(echo $line); done < .ssh/authorized_keys
7
27.01.2020, 19:46
[117165]экстраполируя из решения zsh решение bash

enter image description here

enter image description here

/dev/fd/63 не является файлом открытого ключа. [117798] /dev/fd/63 не является файлом с открытым ключом.

почти..... Это должно сработать, но ssh-keygen, кажется, не любит читать непосредственно из сгенерированного fd. Используя временный файл для <( redirection, он работает. Why?

  • 1024 1f:c7:da:ef:ff:ff:ff:ff:c8:77:c6:f8:1f:dd:f3:1a /tmp/key (RSA) [117799] 3072 83:cd:af:b4:ff:ff:ff:ff:02:30:e7:1e:47:ed:c5:69 /tmp/key (RSA)
  • конечно, тогда вам будет проще написать это и быть счастливым
4
27.01.2020, 19:46

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)

приводит к желаемому результату.

10
27.01.2020, 19:46

Теги

Похожие вопросы