Ejecutar un comando a través de SSH en la Mac provoca una excepción; funciona bien cuando está conectado directamente

2

Estoy tratando de firmar algún código para una aplicación. Puedo iniciar sesión en mi Mac (Mountain Lion) y hacer esto fácilmente:

codesign -s "Developer ID Application: My Name" -f /path/to/appfile/mounted/elsewhere.app

'/path/to/appfile/mounted/elsewhere.app' es la ruta al archivo .app que en realidad está alojado a través de Samba en otro servidor.

Sin embargo, si ssh en la Mac y ejecuto el mismo comando obtengo:

/path/to/appfile/mounted/elsewhere.app: replacing existing signature
libc++abi.dylib: terminate called without an active exception
Abort trap: 6

... y falla. Aquí está la parte superior del informe de accidente:

Process:         codesign [1353]
Path:            /usr/bin/codesign
Identifier:      codesign
Version:         0.3
Code Type:       X86-64 (Native)
Parent Process:  sshd [1352]
User ID:         501

Date/Time:       2012-08-01 11:06:50.092 +0100
OS Version:      Mac OS X 10.8 (12A269)
Report Version:  10

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
terminate called without an active exception
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib              0x00007fff9980f212 __pthread_kill + 10
1   libsystem_c.dylib                   0x00007fff96de1b34 pthread_kill + 90
2   libsystem_c.dylib                   0x00007fff96e25dfa abort + 143
3   libc++abi.dylib                     0x00007fff92619f87 abort_message + 257
4   libc++abi.dylib                     0x00007fff92617944 default_terminate() + 42
5   libstdc++.6.dylib                   0x00007fff9249e527 std::terminate() + 18
6   com.apple.security                  0x00007fff8d898dfb Security::CodeSigning::SecCodeSigner::Signer::signMachO(Security::Universal*, Security::CodeSigning::Requirement::Context const&) + 1047
7   com.apple.security                  0x00007fff8d897e67 Security::CodeSigning::SecCodeSigner::Signer::sign(unsigned int) + 129
8   com.apple.security                  0x00007fff8d8957b9 Security::CodeSigning::SecCodeSigner::sign(Security::CodeSigning::SecStaticCode*, unsigned int) + 393
9   com.apple.security                  0x00007fff8d894a23 SecCodeSignerAddSignatureWithErrors + 52
10  codesign                            0x00000001096d0cca 0x1096ce000 + 11466
...

... Puedo publicar el resto si es necesario.

¿Qué es lo que impide que esto funcione a través de SSH?

Dan Gravell
fuente

Respuestas:

4

Descubrí que necesitaba desbloquear el llavero de seguridad:

Mac-mini:~ gravelld$ security unlock-keychain
password to unlock default: 
Mac-mini:~ gravelld$ codesign -s "Developer ID Application: My Name" -f /path/to/appfile/mounted/elsewhere.app
/path/to/appfile/mounted/elsewhere.app: replacing existing signature
Mac-mini:~ gravelld$ 

¡Éxito! Espero que esto ayude a alguien.

Dan Gravell
fuente
Esto responde a la mitad del problema que tuve. La otra mitad es: estoy intentando ejecutar esto automáticamente como parte de un script de compilación. ¿Hay alguna manera de evitar que se le solicite la contraseña?
Trejkaz
@Trejkaz Es malo pero puedes pasar la contraseña a security unlock-keychain utilizando la -p cambiar.
Dan Gravell
Sí ... eso es bastante malo. Supongo que tendré que minimizarlo poniéndolo en un llavero diferente.
Trejkaz