macOS Sierra - Fehler: Das angegebene Element konnte im Schlüsselbund nicht gefunden werden - innerhalb von ssh

3957
TOho

Wenn ich versuche, codesign --force --deep-verify --verbose --sign "CERT-NAME" ...über SSH zu laufen, bekomme ich immer einen Fehler:The specified item could not be found in the keychain.

Wenn ich jedoch denselben Befehl local ausführt, funktioniert alles einwandfrei.

Irgendwelche Ideen?

1

1 Antwort auf die Frage

0
Gordon Davisson

Es ist schwer sicher zu sagen, ohne den tatsächlichen vollständigen Befehl zu sehen, aber ich würde vermuten, dass Sie wahrscheinlich Probleme beim Zitieren haben, weil der Befehl durch zwei Shells (lokale Shell -> SSH-Tunnel -> Remote Shell -> Codesign-Befehl) geleitet wird ). Jede Shell interpretiert und entfernt Anführungszeichen und Escape-Zeichen, bevor Strings weitergegeben werden. Diese doppelten Anführungszeichen sollen von der endgültigen Shell interpretiert werden. Möglicherweise müssen Sie eine weitere Ebene von Anführungszeichen hinzufügen. Hier sind einige Beispiele:

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

Dies funktioniert nicht, da die doppelten Anführungszeichen von der lokalen Shell interpretiert und entfernt werden, sodass der letzte Befehl (effektiv) den Zertifikatsnamen nicht mit Anführungszeichen versehen hat.

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

Dies funktioniert, weil die äußeren (einfachen) Anführungszeichen von der lokalen Shell entfernt werden, sodass die inneren (doppelten) Anführungszeichen von der fernen Shell interpretiert werden können, sodass der gesamte cert-Name codesignals ein einziges Argument an den Befehl übergeben wird.

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

Dies funktioniert auch, aber hier werden doppelte Anführungszeichen sowohl für die äußere als auch für die innere Ebene verwendet, daher muss die innere Ebene übergangen werden.