1

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

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

Есть идеи?

1 ответ1

0

Трудно сказать наверняка, не видя фактической полной команды, но я предполагаю, что вы, вероятно, сталкиваетесь с проблемами цитирования, потому что команда проходит через две оболочки (локальная оболочка -> туннель 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\""

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .