我在办公室设置了一个 jenkins,其中 jenkins(windows)使用 OpenSSH 公钥私钥身份验证通过 ssh 连接到从属服务器(windows)。我现在面临的问题是无法访问从属服务器上的映射驱动器。我在网上寻找了几种解决方案,但无法访问已映射的驱动器或将新驱动器从 jenkins 映射到从属服务器上。我尝试了 net use \shared\folder /user:domainname\user /p:yes 和 powershell 命令 New-SmbMapping -LocalPath -RemotePath -Persistent:[$true|$false] 和 New-PSDrive -Name -Root -PSProvider FileSystem -Scope [Global|Local] -Persist:[$true|$false]。当我在从属服务器上本地运行时,所有这些都工作正常,即使有挂载,我也无法通过运行我的作业从 jenkins 主服务器访问,因为我的 jenkins 管道作业和构建访问这些 n/w 共享驱动器。我尝试了所有这些命令,并通过 withCredentials 传递了用户/密码。每次我收到相同的错误消息“指定的登录会话不存在。它可能已被终止”
顺便说一句,从属服务器上的 jenkins 不是作为 Windows 服务运行的,而是在启动代理时通过 java -jar 命令运行 slave.jar。此外,域用户在任何地方都相同。当使用 ssh 上的用户/密码凭据而不是密钥启动代理时,一切正常,但我们使用密钥进行身份验证,这造成了问题。
我也尝试在作业中运行 Groovy 脚本来执行网络使用,但每次有新任务时,它都要等待批准,这对我们来说并不理想
无法找到解决方案,是否有人解决过类似的问题?
答案1
您是否尝试过指定凭证而不是使用私钥/公钥认证?
其中 jenkins (windows) 使用 OpenSSH 公私密钥认证通过 ssh 连接到从属 (windows)。
通过基于密钥的身份验证打开的远程会话没有关联的用户凭据,因此无法以用户身份进行出站身份验证。这是设计使然,并遵守标准 Windows 安全规则。