macOS Sierra - erro: O item especificado não pôde ser encontrado no keychain - dentro do ssh

1

Quando tento executar codesign --force --deep-verify --verbose --sign "CERT-NAME" ... sobre SSH, sempre recebo um erro: The specified item could not be found in the keychain.

Mas quando eu executo o mesmo comando local tudo funciona bem.

Alguma ideia?

    
por TOho 23.09.2016 / 16:03

1 resposta

0

É difícil dizer com certeza sem ver o comando completo, mas eu acho que você provavelmente está passando por problemas de citação porque o comando é passado através de dois shells (shell local - > ssh tunnel - > remote shell - > comando codesign). Cada shell interpreta e remove aspas e escapa antes de passar as strings, e você quer que as aspas duplas sejam interpretadas pelo shell final, então você pode precisar adicionar outra camada de aspas. Aqui estão alguns exemplos:

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

Isso não funciona porque as aspas duplas são interpretadas e removidas pelo shell local, portanto, o comando final (efetivamente) tem o nome do certificado sem aspas.

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

Isso funciona porque as aspas externas (simples) são removidas pelo shell local, deixando as (duas) aspas internas a serem interpretadas pelo shell remoto, portanto, ele passará todo o nome do certificado para o codesign comando como um único argumento.

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

Isso também funciona, mas aqui são usadas aspas duplas para as camadas externa e interna, portanto a camada interna precisa ser escapada.

    
por 23.09.2016 / 22:12