当我尝试codesign --force --deep-verify --verbose --sign "CERT-NAME" ...
通过SSH运行时,总是出现错误:The specified item could not be found in the keychain.
但是当我在本地运行相同的命令时,一切正常。
有任何想法吗?
很难确定没有看到实际的完整命令,但是我想您可能正在遇到引用问题,因为该命令通过两个shell传递(本地shell-> ssh隧道->远程shell-> codesign命令)。每个shell都会在传递字符串之前解释并删除引号和转义符,并且您希望最终的shell解释这些双引号,因此您可能需要添加另一层引号。这里有些例子:
ssh user@server codesign --force --deep-verify --verbose --sign "CERT NAME"
这是行不通的,因为双引号是由本地外壳程序解释和删除的,因此最终命令(有效)的证书名称未加引号。
ssh user@server 'codesign --force --deep-verify --verbose --sign "CERT NAME"'
之所以可行,是因为外部(单引号)被本地外壳删除,而内部(双引号)由远程外壳解释,因此它将整个证书名称codesign
作为单个参数传递给命令。
ssh user@server "codesign --force --deep-verify --verbose --sign \"CERT NAME\""
这也可行,但是在这里,外层和内层都使用双引号,因此需要对内层进行转义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句