Есть несколько проблем с этой командой трубопровода:
key=$(ssh-keygen -yf lony.pem) | echo $key |
ssh-keygen -lf /dev/stdin <<<"$key"
Во-первых, не ясно, почему вы пытаетесь трубы (|
) на стандартный вывод вашего оператора присваивания в echo
заявлении. Первый не производит никакого вывода, а второй не потребляет никакого ввода. В третьем компоненте вы передаете команду stdout из команды echo
в stdin ssh-keygen
... где вы также находитесь перенаправление stdin с помощью оператора <<<
.
Самый простой способ, чтобы получить отпечатки пальцев из файла закрытого ключа только для запуска:
ssh-keygen -lf /path/to/privatekey.pem
Например, если мы формируем закрытый ключ:
bash-4.3$ ssh-keygen -f testkey -N ''
Затем мы можем сравнить выход из этого:
bash-4.3$ ssh-keygen -lf testkey
2048 SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM [email protected] (RSA)
Для этого:
bash-4.3$ ssh-keygen -yf testkey | ssh-keygen -lf /dev/stdin
2048 SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM no comment (RSA)
И посмотрите, что мы получаем тот же отпечаток пальца обеих команд.
Спасибо, что вы правы! Я просто хотел отпечаток от открытого ключа. Проблема заключается в том, что ваша последняя команда всегда приводит к тому, что «/ dev/stdin не является файлом открытого ключа». – lony
Возможно ли, что AWS использует другой метод отпечатки пальцев? Использование вашего первого метода возвращает другой хеш, как AWS :( – lony
http://serverfault.com/questions/603982/why-does-my-openssh-key-fingerprint-not-match-the-aws-ec2-console- keypair-finger, который решил это – lony