我正在使用以下代码连接到Windows 2008服务器。

WinRmTool.Builder builder = WinRmTool.Builder.builder("hostname", "domain\username", "password");
builder.setAuthenticationScheme(AuthSchemes.NTLM);
builder.useHttps(false);
WinRmTool tool =  builder.build();
tool.executePs("COMMAND");


我在例外之下


  由以下原因引起:java.io.IOException:在管道上检测到授权循环
  “ {http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd} WinRmPort.http-conduit”
  在具有域“空”的URL“ http://hostname:5985/wsman”上


我可以在浏览器中无需任何身份验证即可访问WS“ http://hostname:5985/wsman”,并且Windows服务器上的winrm服务设置如下。

   AllowUnencrypted = false
    Auth
        Basic = false
        Kerberos = true
        Negotiate = true
        Certificate = false
        CredSSP = false
        CbtHardeningLevel = Relaxed
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986


客户端上的设置也相同。对Winrm WS的HTTPS访问不起作用,因此我正在使用useHttps(false)。

客户端和服务器位于不同的域。我能够使用提供的主机名,域\用户名和密码成功rdp到服务器。

我尝试将身份验证方案更改为kerberos / basic / digest。他们似乎都不起作用。我在两侧都尝试了“ allowUnencrypted = true”,但仍然无法正常工作。

我是否缺少任何conf / prop文件?

最佳答案

在远程服务器上配置以下设置后,相同的代码有效

winrm set winrm/config/service/Auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

关于java - 在领域为“null”的URL的管道上检测到Winrm4j授权循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46299280/

10-14 03:56