Я хочу поставить ssh-add /path/to/special_key
в верхней части сценария. Это работает нормально, но всегда запрашивает пароль. Это странно и немного раздражает, так как все еще запрашивает фразу-пароль, даже когда ssh-add -l
показывает, что ключ уже был добавлен.
Есть ли способ сказать это: «добавить этот ключ и спросить пароль, если он еще не был добавлен, иначе ничего не делать»?
shell-script
ssh
ssh-agent
Даррен Кук
источник
источник
Ответы:
Я не вижу каких-либо опций для ssh-add, которые бы помогли достичь желаемого результата, но это довольно легко обойти, учитывая, что вас интересует только один ключ.
Сначала возьмите отпечаток пальца для вашего special_key:
Допустим, этот отпечаток выглядит как 6d: 98: ed: 8c: 07: 07: fe: 57: bb: 19: 12: 89: 5a: c4: bf: 25
Затем, в верхней части вашего скрипта, используйте,
ssh-add -l
чтобы проверить, загружен ли этот ключ, прежде чем предлагать добавить его:Вы можете сложить все это в одну строку, если хотите:
источник
ssh-keygen
ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/key
ssh-keygen
в ответ не генерирует ключ - так же, какssh-add -l
в вашем примере, на самом деле ничего не добавляется. Флаги изменяют поведение команд, поэтому оно не совсем соответствует названию. Обратите внимание, что эти версии функционально отличаются - если проверка по пути и ключ на этом пути изменится, ваша версия не подберет его. Версия в ответе также обнаружит существующий ключ независимо от того, откуда он был загружен.Нет прямого способа проверить с помощью just,
ssh-add
но вы можете использоватьssh-keygen
и некоторые сценарии для проверки.Выше будет напечатано,
yes
если отпечаток, представленный файлом,/path/to/special_key
присутствовал вssh-add -l
выводе.пример
Где содержимое вывода из
ssh-keygen -lf /path/to/special_key
выглядит так:И мы используем `awk '{print $ 2}', чтобы выбрать только 2-й столбец, который содержит отпечаток, то есть:
Ссылки
источник
У вас могут быть конкретные причины для
ssh-add
явного использования , но если вы просто хотите «Я хочу, чтобы мне выдавали фразу-пароль при первом использовании ключа, но не после этого», openssh предлагает более простое решение:Положите
AddKeysToAgent yes
в свой.ssh/config
файл.источник
ssh-add -K FILE
работал нормально для меня на Mac.Он по-прежнему показывает строки «Идентификация добавлена:», но не запрашивает фразу-пароль.
С man-страницы:
источник