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

连接HPC调度器时如何通过编程方式设置用户密码凭证

解决方案

1. 核心问题原因

出现该报错的核心原因是SetCachedCredentials传入的账号格式,和HPC集群身份校验要求的格式不匹配,导致存储的凭证无法通过验证。

2. 修复方案

第一步:调整用户名格式

你从密钥库读取的userName必须和集群要求的账号格式完全匹配:

  • 域环境下必须携带域前缀,格式为域名\用户名,例如HPCDOMAIN\svc_job_scheduler
  • 也可使用UPN格式,例如svc_job_scheduler@hpdomian.com
    如果仅传入纯用户名不带域信息,SetCachedCredentials存储的凭证和集群身份验证时查询的凭证不匹配,就会触发连接失败。

第二步:调整调用逻辑

HPC Scheduler API要求SetCachedCredentials传入的用户名,必须和ConnectServiceAsClient委托返回的用户名完全一致,包括大小写、域格式。同时需要确认从密钥库取出的密码没有被编码转义。
调整后的参考代码:

string userName = GetKeyVaultSecret("ServiceAccount");
string password = GetKeyVaultSecret("ServiceAccountPassword");

// 补充域前缀,可根据你实际的环境域名修改
if (!userName.Contains("\\"))
{
    userName = $"你的实际域名\\{userName}";
}

using (IScheduler scheduler = new Scheduler())
{
    try
    {
        Console.WriteLine("Connecting to {0} as {1}...", clusterName, userName);
        scheduler.SetCachedCredentials(userName,password);
        scheduler.ConnectServiceAsClient(clusterName, () => userName);
    }
    catch (Exception e)
    {
        Console.Error.WriteLine("Could not connect to the scheduler: {0}", e.Message);
        if (e.InnerException != null) Console.WriteLine(e.InnerException.Message.ToString());
        return 1; 
    }
}

额外排查点

  • 确认服务账号已经加入HPC集群的调度器访问权限组,拥有作业提交权限
  • 确认密钥库中存储的密码没有过期,且没有包含特殊字符被错误转义
  • 如果是工作组环境的HPC集群,需要确保服务账号在调度器节点本地存在,且用户名和密码和你传入的完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:06:09