Windows 如何在Pageant中使用JMeter加载SSH密钥

Windows 如何在Pageant中使用JMeter加载SSH密钥,windows,jmeter,pageant,Windows,Jmeter,Pageant,我正在尝试加载一个预生成的SSH密钥,该密钥位于%USERPROFILE%\\.SSH\id\u rsa.ppk中 我设置了用户定义的变量: PAGEANT: "C:\Path_to_pageant\Pageant.exe" HOME: %USERPROFILE% ID_RSA: ${HOME}\.ssh\id_rsa_jmeter.ppk 操作系统进程采样器配置为: Command: ${PAGEANT} Value: "${ID_RSA}" 运行后,将显示: Executin

我正在尝试加载一个预生成的SSH密钥,该密钥位于
%USERPROFILE%\\.SSH\id\u rsa.ppk

我设置了用户定义的变量:

PAGEANT: "C:\Path_to_pageant\Pageant.exe"
   HOME: %USERPROFILE%
 ID_RSA: ${HOME}\.ssh\id_rsa_jmeter.ppk
操作系统进程采样器配置为:

Command: ${PAGEANT}
  Value: "${ID_RSA}"
运行后,将显示:

Executing: "C:\Path_to_pageant\Pageant.exe" "${HOME}\.ssh\id_rsa_jmeter.ppk"
Pageant警告说找不到密钥,没有加载密钥

如果我将ID\u RSA更改为
%USERPROFILE%\.ssh\ID\u RSA\u jmeter.ppk

Executing: "C:\Path_to_pageant\Pageant.exe" "%USERPROFILE%\.ssh\id_rsa_jmeter.ppk"
Pageant警告说找不到密钥,没有加载密钥

如果我将该命令复制并粘贴到命令提示符中,它会将该键添加到Pageant。 似乎没有展开
${HOME}
%USERPROFILE%


注意:完全硬编码路径将允许JMeter导入密钥。

只有
%USERPROFILE%
无法展开(
${HOME}
展开为
%USERPROFILE%
,随后无法展开)

这是因为扩展是由命令提示符shell完成的,而不是由OS进程采样器完成的

我认为获得
%USERPROFILE%
的最佳方法是在启动时将其加载到属性中,然后使用
${HOME}

-DUSERPROFILE=%USERPROFILE%
添加到JMeter启动命令行,然后在脚本中使用
${{USERPROFILE}}

另一种方法是更改命令,使其运行
“cmd.exe/C\path\u到\u pageant\pageant.exe”
。这将在命令提示符调用Pageant之前调用命令提示符展开
%USERPROFILE%

替换您的

  • %USERPROFILE%
  • %HOME%
变量与

  • ${\uuu BeanShell(System.getenv(“USERPROFILE”),)}
  • ${\uuu BeanShell(System.getenv(“HOME”),)}
因此

上述方法使用JavaSDK类方法调用和JMeter函数的组合


要了解使用函数还可以做些什么,请参阅post系列文章

谢谢,这正是我想要的!