首页 > 解决方案 > 用户注销后,无法从 SQL 代理进行 GPG 解密

问题描述

设置: - 我正在尝试通过 ssis 包中脚本任务中的 C# 代码解密传入文件。下面是生成的命令,在 Visual Studio 中通过调试模式执行时工作正常。此外,Visual Studio 是使用服务帐户凭据打开的。

--homedir C:\Users\serviceaccounntName\AppData\Roaming\gnupg\" --batch --yes --passphrase MyPassphrase -d -o "outputfileName" --always-trust "SourceFileName"

ISSUE: 一旦通过调试模式运行,通过 SQL 代理作业也可以正常工作。但是,一旦我从设置了所有这些的远程桌面注销,传入的文件就不再通过 SQl 代理作业解密并继续执行。我检查了任务管理器,我可以看到 pinentry.exe 在下面运行服务帐户用户。为了使它工作,我终止任务并从调试模式调试一个示例文件,该文件将要求输入密码并发布甚至 sql 代理作业开始工作。但一旦我退出,同样的事情再次发生。

我尝试在脚本和进程任务中使用不带 --homedir 选项的命令,但相同的行为仍在继续。

谢谢

标签: encryptionssisgnupgpgp

解决方案


下面是最终奏效的。

  1. 确保 gpg 代理会话处于活动状态。为此,我手动运行了一个解密包(调试模式)并输入了密码。
  2. 从 CMD(命令提示符)运行以下两个命令。gpg-agent.exe 允许-loopback-pinentry gpgconf –kill gpg-agent
  3. 我在从我的 SSIS 进程任务调用的批处理文件中使用以下命令。@echo OURPASSPHRASE|gpg.exe --batch --pinentry-mode=loopback --passphrase-fd 0 -d -o FILEPath\FileName.txt FilePath\FileName.txt.gpg

(以上所有操作都是使用我们用来运行 sql 作业的服务帐户完成的。)

参考以下链接 https://github.com/carlolars/gnupg2-msys2/issues/1

谢谢希望它有帮助。


推荐阅读