~/.ssh/authorized_keys[2]에는 공개 키 목록이 포함되어 있습니다.
안타깝게도 각 공개 키에 대해 키 강도(비트 수)가 지정되어 있지 않습니다.
이 파일을 한 줄씩 처리하고 키 강도를 출력할 수 있는 유틸리티가 있습니까?
매뉴얼 페이지를 확인했지만 ssh-keygen
개인 키로만 작동하는 것 같습니다.
pageant
또한 Putty 도구에 표시된 방식으로 sha1 해시를 출력할 수 있는 도구가 있습니까?
내가 원하는 형식은 다음과 같습니다.
Key Algorithm Strength Hash Comment
ssh-rsa 2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff user1@host1
ssh-rsa 2048 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:11 user2@host2
답변1
SSH 키 생성기작업의 핵심은 완료되었지만(공개 키에서 지문 생성) 일반적으로 파일에서 찾을 수 있는 것처럼 여러 키 목록을 자동으로 처리하지는 않습니다 authorized_keys
.
다음은 키를 분할하여 키를 공급하는 스크립트입니다.SSH 키 생성기원하는 테이블을 생성하십시오.
#!/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
답변2
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)
원하는 출력을 생성합니다.
답변3
zsh가 있으면 간단히 다음을 수행할 수 있습니다.
while read line ; do ssh-keygen -lf =(echo $line); done < .ssh/authorized_keys
답변4
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