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 codesign
als 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.