macOS Sierra - ошибка: указанный элемент не может быть найден в цепочке для ключей - в пределах ssh

3837
TOho

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

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

Есть идеи?

1

1 ответ на вопрос

0
Gordon Davisson

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

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\"" 

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