Если Вы хотите переименовать файл, -.bar
, (mv не будет работать), попробуйте это:
cat >foo.bar <-.bar
перед использованием команды:
rm -- -.bar
Необходимо смочь исследовать содержание исходного файла в foo.bar
Используйте -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
файл.
Удивительно, но версия 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
.
ssh-agent sh -c 'ssh-add; ssh-add -l'
– kenorb 26.03.2015, 23:15ssh-add
это кажется, что эта команда должна только добавить ключи к агенту. И затемssh-agent
должен знать что ключи его содержание. Моя перспектива отличалась. – Shiplu Mokaddim 06.05.2016, 16:43