Apakah ada cara sederhana untuk mendapatkan daftar semua sidik jari yang dimasukkan dalam .ssh / Authorized_key || File .ssh / Authorized_keys2?
ssh-keygen -l -f .ssh/authorized_keys
hanya akan mengembalikan sidik jari dari baris / entri / publickey pertama
retas dengan 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"
)
}
}'
tetapi apakah ada cara yang lebih mudah atau perintah ssh yang tidak saya temukan?
authorized_keys
file, di manassh-keygen
baulks di. Saya mencari cara yang dapat diandalkan untuk menguraikannya tetapi yang terbaik yang bisa saya temukan tercakup dalam jawaban ini .Jawaban:
Berikut ini hack lain menggunakan bash polos tanpa file sementara:
Anda dapat dengan mudah menjadikannya fungsi di
.bashrc
:dan menyebutnya dengan:
sumber
ssh-keygen -l -f /dev/stdin
tampaknya tidak bekerja di mac .. namun tidak relevan untuk server tetapi gnaa apple atau apakah itu "masalah" BSD/dev/stdin is not a public key file.
?/dev/stdin
bukanlah ide yang bagus secara umum, lebih baik digunakan-
, tetapi untuk beberapa alasanssh-keygen
tidak tahu tentang-
...local file="${1:-$HOME/.ssh/authorized_keys}"
memungkinkan untuk bekerja tanpa argumen dan default ke~/.ssh/authorized_keys
file biasa dan mengutip yang< "$file"
digunakan sebagai input kewhile
loop.Berikut adalah cara portabel untuk menampilkan semua sidik jari kunci untuk file yang diberikan, diuji pada Mac dan Linux:
Contoh penggunaan:
sumber
#!/usr/local/bin/bash
. Saya kemudian disebut fungsi dengan menambahkan ini sebagai baris terakhir:fingerprint_keys $@
. Saya menyimpan script sebagaifingerprints.bash
, menandainya dengan executablechmod u+x ./fingerprints.bash
. Selain itu, saya menambahkan komentar ke file dengan tautan ke jawaban ini, seperti itu, di dekat bagian atas# solution from "Will" on SO http://serverfault.com/a/615892/126742
. Sebut saja seperti itu./fingerprints.bash ~/.ssh/authorized_keys
.#!/usr/bin/env bash
karena path untukenv
sangat portabel dan memberitahuenv
untuk mengeksekusi Bash yang diketahuinya.Satu kalimat berdasarkan trik / dev / stdin dari jawaban ℝaphink dan man xargs → CONTOH :
sumber