Как перечислить ключи, добавленные к ssh-агенту с, ssh-добавляют?

Если Вы хотите переименовать файл, -.bar, (mv не будет работать), попробуйте это:

cat >foo.bar <-.bar

перед использованием команды:

rm -- -.bar

Необходимо смочь исследовать содержание исходного файла в foo.bar

210
30.03.2013, 21:25
2 ответа

Используйте -l опция к ssh-add перечислять их цифровым отпечатком.

$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)

Или с -L получить полный ключ в формате OpenSSH.

$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa

Последний формат совпадает с Вами, поместил бы их в a ~/.ssh/authorized_keys файл.

255
27.01.2020, 19:27
  • 1
    [$ rahul@srv1 ~] ssh-добавляют, что-l не Мог открыть соединение с Вашим агентом аутентификации. –  Rahul Patil 20.12.2012, 13:11
  • 2
    @RahulPatil результата, Вы выполняющий агент SSH на той машине? Выполните это на той же машине, относительно которой Вы добавили ключи, не удаленный! –  gertvdijk 20.12.2012, 13:18
  • 3
    Вы могли выполнить эту команду на удаленном хосте, если ключевая передача агента включена. –  Patrick 30.03.2013, 21:58
  • 4
    : ssh-agent sh -c 'ssh-add; ssh-add -l' –  kenorb 26.03.2015, 23:15
  • 5
    @gertvdijk я на самом деле говорил об именовании. С имени ssh-add это кажется, что эта команда должна только добавить ключи к агенту. И затем ssh-agent должен знать что ключи его содержание. Моя перспектива отличалась. –  Shiplu Mokaddim 06.05.2016, 16:43

Удивительно, но версия ssh-addдля MacOS в какой-то момент перестала отображать имена файлов, как в версии для Linux. Я написал этот скрипт, который делает то же самое для отпечатков пальцев, у которых есть соответствующий файл в ~/.ssh/.

Я вызываю функцию ssh-add_wf, wf = with file. Подробная информация о функции приведена ниже :

.
$ type ssh-add_wf
ssh-add_wf is a function
ssh-add_wf ()
{
    while read -r line; do
        for file in ~/.ssh/*.pub;
        do
            printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file";
        done | column -t | grep --color=auto "$line" || echo "$line";
    done < <(ssh-add -l | awk '{print $2}')
}

Пример

$  ssh-add_wf
 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  myuser@mydom.lan  (RSA)  /Users/myuser/.ssh/ssh_myuser@mydom.lan_id_rsa.pub
 SHA256:qInIrnKcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  myuser@mydom.com  (RSA)  /Users/myuser/.ssh/github_myuser@mydom.com_id_rsa.pub
 SHA256:tX+AAJA0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:EyNkhTLQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  myuser@mydom.com  (RSA)  /Users/myuser/.ssh/ssh_myuser@mydom.com_id_rsa.pub
 SHA256:KKKVwtvFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:tr0hZP52XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Выше, любые ключи в выводе ssh-add, которые соответствуют файлу в каталоге ~/.ssh/, будут включать имя файла в выводе в 4-м столбце. Любые ключи, которые не имеют этого столбца, будут пустыми. В этом выводе у нас есть 3 ключа, у которых есть совпадающие файлы.

Механика функции

Скрипт использует 2 цикла. Внешний цикл — это while, который принимает результат ssh-add. Этот вывод представляет собой все отпечатки ключей SSH, загруженных в ssh-agent.

Внутренний цикл — это forцикл, который проходит через содержимое всех файлов, соответствующих этому шаблону, ~/.ssh/*.pub. Для каждого файла мы опрашиваем его с помощью ssh-keygen -lf <file>, а затем удаляем первый столбец этого вывода :

.

...до...

4096 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.lan

...после...

SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.lan

Затем эта строка печатается вместе с именем файла:

printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file"

В конце выполнения этого цикла получается следующее:

| column -t | grep "$line" || echo "$line"

Это форматирует вывод так, чтобы он был отформатирован как столбец(column -t).

На этом этапе мы смотрим на эти выходные данные для отпечатка пальца из ssh-addчерез grep "$line". Если совпадение найдено, мы печатаем наш вывод printf, в противном случае мы возвращаемся к простому выводу исходного отпечатка из ssh-add, $line.

Ссылки

13
08.02.2020, 17:57

Теги

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