macOS Sierra - ошибка: Указанный элемент не найден в связке ключей - в ssh

macOS Sierra - ошибка: Указанный элемент не найден в связке ключей - в ssh

При попытке запустить codesign --force --deep-verify --verbose --sign "CERT-NAME" ...SSH я всегда получаю ошибку:The specified item could not be found in the keychain.

Но когда я запускаю эту же команду локально, все работает нормально.

Есть идеи?

решение1

Трудно сказать наверняка, не видя полной команды, но я предполагаю, что вы, вероятно, сталкиваетесь с проблемами кавычек, поскольку команда проходит через две оболочки (локальная оболочка -> туннель ssh -> удаленная оболочка -> команда codesign). Каждая оболочка интерпретируети удаляеткавычки и экранирования перед передачей строк, и вы хотите, чтобы эти двойные кавычки интерпретировались финальной оболочкой, поэтому вам может потребоваться добавить еще один слой кавычек. Вот несколько примеров:

ssh user@server codesign --force --deep-verify --verbose --sign "CERT NAME"

Это не работает, поскольку двойные кавычки интерпретируются и удаляются локальной оболочкой, поэтому в конечной команде (фактически) имя сертификата не заключено в кавычки.

ssh user@server 'codesign --force --deep-verify --verbose --sign "CERT NAME"'

Это работает, поскольку внешние (одинарные) кавычки удаляются локальной оболочкой, а внутренние (двойные) кавычки интерпретируются удаленной оболочкой, поэтому она передаст все имя сертификата команде codesignкак один аргумент.

ssh user@server "codesign --force --deep-verify --verbose --sign \"CERT NAME\""

Это тоже работает, но здесь двойные кавычки используются как для внешнего, так и для внутреннего слоя, поэтому внутренний слой необходимо экранировать.

Связанный контент