Есть ли простой способ получить список всех отпечатков пальцев, введенных в .ssh / authorized_keys || Файл .ssh / authorized_keys2?
ssh-keygen -l -f .ssh/authorized_keys
вернет только отпечаток первой строки / записи / публичного ключа
взломать с помощью awk:
awk 'BEGIN {
while (getline < ".ssh/authorized_keys") {
if ($1!~"ssh-(r|d)sa") {continue}
print "Fingerprint for "$3
system("echo " "\""$0"\"> /tmp/authorizedPublicKey.scan; \
ssh-keygen -l -f /tmp/authorizedPublicKey.scan; \
rm /tmp/authorizedPublicKey.scan"
)
}
}'
но есть ли более простой способ или команда ssh, которую я не нашел?
authorized_keys
файле, в которомssh-keygen
скрывается ошибка. Я искал надежный способ разобрать его, но лучшее, что я мог придумать, покрыто этим ответом .Ответы:
Вот еще один хак с использованием простого bash без временных файлов:
Вы можете легко сделать это функцией в вашем
.bashrc
:и назовите это с:
источник
ssh-keygen -l -f /dev/stdin
похоже, не работает на Mac .. но, тем не менее, не относится к серверам, но gnaa apple или это проблема BSD/dev/stdin is not a public key file.
?/dev/stdin
не очень хорошая идея в целом, лучше использовать-
, но по какой-то причинеssh-keygen
не знает о-
...local file="${1:-$HOME/.ssh/authorized_keys}"
чтобы это работало без каких-либо аргументов, и по умолчанию использовал обычный~/.ssh/authorized_keys
файл, и цитировал его< "$file"
как входные данные дляwhile
цикла.Вот портативный способ показать все ключевые отпечатки пальцев для данного файла, протестированного на Mac и Linux:
Пример использования:
источник
#!/usr/local/bin/bash
. Я тогда назвал функцию, добавив это в последней строке:fingerprint_keys $@
. Я сохранил скрипт какfingerprints.bash
, пометив его как исполняемыйchmod u+x ./fingerprints.bash
. Кроме того, я добавил комментарий к файлу со ссылкой на этот ответ, например, в самом верху# solution from "Will" on SO http://serverfault.com/a/615892/126742
. Назовите это так./fingerprints.bash ~/.ssh/authorized_keys
.#!/usr/bin/env bash
потому что путь дляenv
него очень переносимый, и он говоритenv
выполнить Bash, о котором он знает.Однострочник, основанный на уловке / dev / stdin из ответа ℝaphink и man xargs → ПРИМЕРЫ :
источник