macOS Sierra - error: el elemento especificado no se pudo encontrar en el llavero - dentro de ssh

macOS Sierra - error: el elemento especificado no se pudo encontrar en el llavero - dentro de ssh

Cuando intento ejecutar codesign --force --deep-verify --verbose --sign "CERT-NAME" ...SSH siempre aparece un error:The specified item could not be found in the keychain.

Pero cuando ejecuto el mismo comando localmente, todo funciona bien.

¿Algunas ideas?

Respuesta1

Es difícil decirlo con certeza sin ver el comando completo real, pero supongo que probablemente tenga problemas con las comillas porque el comando pasa a través de dos shells (shell local -> túnel ssh -> shell remoto -> comando codesign ). Cada caparazón interpretay eliminacomillas y escapes antes de pasar cadenas, y desea que el shell final interprete esas comillas dobles, por lo que es posible que deba agregar otra capa de comillas. Aquí hay unos ejemplos:

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

Esto no funciona porque el shell local interpreta y elimina las comillas dobles, por lo que el comando final (efectivamente) tiene el nombre del certificado sin comillas.

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

Esto funciona porque el shell local elimina las comillas externas (simples), dejando que el shell remoto interprete las comillas internas (dobles), por lo que pasará el nombre completo del certificado al codesigncomando como un argumento único.

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

Esto también funciona, pero aquí se utilizan comillas dobles tanto para la capa exterior como para la interior, por lo que es necesario escapar de la capa interior.

información relacionada