macOS Sierra - erro: o item especificado não foi encontrado nas chaves - dentro do ssh

macOS Sierra - erro: o item especificado não foi encontrado nas chaves - dentro do ssh

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

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

Alguma ideia?

Responder1

É difícil dizer com certeza sem ver o comando completo real, mas acho que você provavelmente está enfrentando problemas de cotação porque o comando é passado por dois shells (shell local -> túnel ssh -> shell remoto -> comando codesign ). Cada shell interpretae removeaspas e escapes antes de passar as strings, e você deseja que essas aspas duplas sejam interpretadas pelo shell final, portanto, pode ser necessário 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 aspas internas (duplas) para serem interpretadas pelo shell remoto, portanto, ele passará o nome inteiro do certificado para o codesigncomando como um único argumento.

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

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

informação relacionada