How to authenticate to a remote server using a remote server's local user via Powershell WinRM

0

Please consider the following scenario:

There are 2 servers: server1 and server2, both on the same network and on the same domain. The objective is to open a PSSession from server1 into server2 using a local user from server2 as the identity:

PS @SERVER1 > $session = New-PSSession -ComputerName server2 -Credential server2\username

The local user on server2 is a member of the WinRMRemoteWMIUsers_ group

If a domain user is used then all works fine:

PS @SERVER1 > $session = New-PSSession -ComputerName server2 -Credential domain\username

The error obtained when trying to connect as a local user is:

New-PSSession : [server2] Connecting to remote server server2 failed with the following error message : WinRM cannot process the request. The following error with errorcode 0x80090311 occurred while using Kerberos
    authentication: There are currently no logon servers available to service the logon request.
     Possible causes are:
      -The user name or password specified are invalid.
      -Kerberos is used when no authentication method and no user name are specified.
      -Kerberos accepts domain user names, but not local user names.
      -The Service Principal Name (SPN) for the remote computer name and port does not exist.
      -The client and remote computers are in different domains and there is no trust between the two domains.
     After checking for the above issues, try the following:
      -Check the Event Viewer for events related to authentication.
      -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
     Note that computers in the TrustedHosts list might not be authenticated.
       -For more information about WinRM configuration, run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.

From the error message there is The following error with errorcode 0x80090311 occurred while using Kerberos authentication and -Kerberos accepts domain user names, but not local user names. so, a connection was attempted after executing the following on server1:

PS @SERVER1 > winrm set winrm/config/client '@{TrustedHosts="server2"}'

Attempting to start a PSSession after the command is executed still fails.

What other step can be attempted?

powershell
winrm
asked on Stack Overflow Apr 19, 2017 by Andres A. • edited Apr 20, 2017 by James C.

1 Answer

1

You should be able to do something like this

$cred = $host.ui.PromptForCredential("local credential", "Enter machine\user ID and password.", "localhost\$env:username", "")
$session = New-PSSession -ComputerName server2 -Credential $cred

So, gather the credential first, then just plug it in. And, you can literally use localhost for the domain side and that works. Worked for me.

> $session
Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
1 Session1         server2         Opened        Microsoft.PowerShell     Available
answered on Stack Overflow Apr 19, 2017 by Roman

User contributions licensed under CC BY-SA 3.0