You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SSH连接Windows Server 2012 R2使用signtool签名exe失败

本地代码签名正常,SSH远程执行时进程卡住无完成日志

问题现象

  • 本地执行signtool签名exe文件完全成功,日志输出完整:
The following certificates were considered:
Issued to: **

    Issued by: ******
    
    Expires:  ******
    
    SHA1 hash: ******

After EKU filter, 1 certs were left.
After expiry filter, 1 certs were left.
After Subject Name filter, 1 certs were left.
After Private Key filter, 1 certs were left.
The following certificate was selected:
Issued to: ****

    Issued by: ******
    
    Expires:   ******
    
    SHA1 hash: ******

Done Adding Additional Store
Successfully signed: ntnxcollector-service.exe

Number of files successfully Signed: 1

Number of warnings: 0

Number of errors: 0
  • 通过SSH远程连接服务器执行相同签名操作时,日志仅输出到Done Adding Additional Store就停止,无后续成功或错误提示:
The following certificate was selected:
Issued to: ****
Issued by: **
Expires:   **
SHA1 hash: ***

Done Adding Additional Store

已排查情况

  • 调整signtool多种参数选项,问题未解决
  • 本地终端执行bash脚本签名正常,仅SSH环境下出现异常

使用的命令

signtool签名命令

signtool sign /debug /a /sm /n "**" /t http://timestamp.digicert.com **.exe 

SSH连接命令

ssh -o StrictHostKeyChecking=no -t WINDOWS_USER@IP

解决思路与方案

  1. 证书存储与私钥访问问题
    Windows SSH远程会话默认可能未加载当前用户的完整证书存储,或私钥需要交互式验证(如密码弹窗)但无图形界面无法触发,导致进程卡住。

    • 操作:将证书导入本地计算机存储(而非当前用户存储);右键证书→「所有任务」→「管理私钥」,给执行签名的用户分配读取权限;若私钥带密码,在命令中添加/p <密码>参数,或配置私钥无需交互式验证。
  2. 环境变量差异
    SSH会话的环境变量可能与本地会话不同,导致signtool无法正常定位依赖或访问资源。

    • 操作:在SSH会话中手动指定signtool所在路径,比如:
      set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64;%PATH%
      signtool sign /debug /a /sm /n "**" /t http://timestamp.digicert.com **.exe
      
      路径根据你的Windows SDK版本和安装位置调整。
  3. 时间戳服务器网络访问限制
    SSH环境下可能存在防火墙或代理,导致signtool无法连接时间戳服务器http://timestamp.digicert.com,进程卡在等待响应。

    • 操作:在SSH会话中用curl http://timestamp.digicert.com测试网络连通性;若无法访问,检查服务器防火墙规则,或更换为其他可用时间戳服务器。
  4. 输出与静默模式调整
    部分signtool版本在远程会话中可能因交互式输出逻辑卡住,尝试静默模式或重定向输出排查。

    • 操作:添加/q参数启用静默模式:
      signtool sign /q /debug /a /sm /n "**" /t http://timestamp.digicert.com **.exe
      
      或重定向输出到文件查看完整日志:
      signtool sign /debug /a /sm /n "**" /t http://timestamp.digicert.com **.exe > sign_result.log 2>&1
      

内容的提问来源于stack exchange,提问作者Ajinkya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:52:43