Enter-PSSession zu Ubuntu schlägt fehl
Inhalt
Enter-PSSession : An error has occurred which PowerShell cannot handle. A remote session might have ended
Sollte diese Fehlmeldung beim Aufbau einer PSSession zu einer Linux Maschine angezeigt werden, kann das eine ganz einfache Ursache haben.
In diesem Beispiel habe ich versucht mich mit meinem Ubuntu Server per SSH/PowerShell zu verbinden.
Enter-PSSession -HostName ubuntupwsh.dev.toolsection.info -UserName fabian
Die Lösung zeigt sich wenn man die Fehlermeldung genauer analysiert.
PS C:\> $Error[0] | fl Exception -Force
Exception : System.Management.Automation.Remoting.PSRemotingDataStructureException: An error has occurred which PowerShell cannot handle. A remote session might have ended. --->
System.Management.Automation.CommandNotFoundException: **The term 'ssh.exe' is not recognized as the name of a cmdlet, function, script file, or operable program**.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
at System.Management.Automation.CommandDiscovery.LookupCommandInfo(String commandName, CommandTypes
commandTypes, SearchResolutionOptions searchResolutionOptions, CommandOrigin commandOrigin,
ExecutionContext context)
at System.Management.Automation.Runspaces.SSHConnectionInfo.StartSSHProcess(StreamWriter&
stdInWriterVar, StreamReader& stdOutReaderVar, StreamReader& stdErrReaderVar)
at System.Management.Automation.Remoting.Client.SSHClientSessionTransportManager.CreateAsync()
at System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerImpl.SendNegotiationAsync(RemoteSes
sionState sessionState)
at System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerImpl.HandleStateChanged(Object
sender, RemoteSessionStateEventArgs arg)
at System.Management.Automation.ExtensionMethods.SafeInvoke\[T\](EventHandler\`1 eventHandler, Object
sender, T eventArgs)
at
System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerStateMachine.RaiseStateMachineEvents()
at System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerStateMachine.ProcessEvents()
--- End of inner exception stack trace ---
at System.Management.Automation.Runspaces.AsyncResult.EndInvoke()
at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.EndOpen(IAsyncResult
asyncResult)
at System.Management.Automation.Runspaces.Internal.RemoteRunspacePoolInternal.Open()
at System.Management.Automation.RemoteRunspace.Open()
at Microsoft.PowerShell.Commands.EnterPSSessionCommand.GetRunspaceForSSHSession()
at Microsoft.PowerShell.Commands.EnterPSSessionCommand.ProcessRecord()
at System.Management.Automation.Cmdlet.DoProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
Der entscheidende Teil dabei ist:
The term ‘ssh.exe’ is not recognized as the name of a cmdlet, function, script file, or operable program.
Es fehlt die ssh.exe. Das kann mehrere Ursachen haben:
- Sie ist nicht installiert
- Sie kann in der Path Variable nicht gefunden werden.
Für beide Ursachen gibt es eine Lösung in dieser Anleitung.