Ich habe ein Kommandozeilenprogramm (C#), das Konfigurationsdateien basierend auf Maschinenschlüssel verschlüsselt. Ein Powershell-Skript kopiert den Build auf einen Zielserver, ändert die Konfiguration entsprechend und installiert Windows-Dienste. Alle Windows-Dienste werden als lokales Systemkonto ausgeführt (Standardbenutzer, nicht-Administrator) - nennen wir dieses Konto "locuser".Powershell Remoting - kann keine exe als ein anderer Benutzer ausführen
Der Zielserver ist ein Win 2012 R2-Server. All dies wird durch PS Remoting vom Build Server auf diesen Zielserver erreicht.
Jetzt muss ich das verschlüsselte Befehlszeilenprogramm als "locuser" ausführen, damit das Programm den kontospezifischen Schlüssel für die Verschlüsselung verwenden kann. Ich weiß, dass dies leicht erreicht werden kann, indem Start-Process
Cmdlet mit -Credentials
Parameter aufgerufen wird. Nun, hier ist der Haken, das obige funktioniert gut, wenn ich in (RDP) zum Zielserver remote und dann das Start-Process .... -Credential $cred
von einer Powershell-Konsole ausführen.
Allerdings muss ich arbeiten, während ich remote-in (mit meinen Skripten) auf dem TargetServer während der Bereitstellung. Beim Remote-In-Zugriff auf den TargetServer verwende ich Zugangsdaten mit Administratorrechten.
Ich habe versucht, die folgenden
- I "locuser" sowohl "Full Control" und "Invoke (Ausführen)" Berechtigungen mithilfe des
Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI
Befehl erteilt habe. Ich habe diesen Befehl für beide ausgeführtMicrosoft.Powershell
undMicrosoft.Powershell32
- Immer noch Zugriff verweigert - Ich habe die "Lokale Sicherheitsrichtlinie" -> "Lokale Richtlinien" -> "User Rights Assignment" -> Imitieren eines Clients nach der Authentifizierung - und fügte hinzu, sowohl das Admin-Konto (das ich melde mich mit) und den „locuser“ Konto - noch erhält Zugriff verweigert
- ich habe auch locuser Admin-Rechte gewährt - Still Zugang verweigert bekommen
ich bin mir ziemlich sicher, , gibt es einige Konfiguration auf der PS Remoting-Seite von Dingen, die ich verpasse, aber nicht herausfinden kann, was - weil alle Powershell wirft mir ist ein Access Denied
Fehler (siehe Screenshot) mit wenig bis gar nicht uns nützliche Informationen zur weiteren Fehlerbehebung.
Auch aktiviert Ereignisprotokolle für alle Spuren, aber ohne Erfolg.
Eigentlich. Das liegt daran, dass Sie die Anmeldeinformationen von dort an einen anderen Computer und dann an einen dritten Computer senden, und Windows nicht vollständig darauf vertraut, dass es nicht imitiert oder umgeleitet wird. Im Grunde handelt es sich um eine Sicherheitsvorkehrung, daher müssen Sie eine Reihe von Ausnahmen für Dinge, denen Sie vertrauen, hinzufügen und es aktivieren, um zu bestätigen, dass Sie wissen, was Sie tun. –
Ich habe den obigen Befehl versucht .. es gibt mir nun eine detailliertere Fehler - [localhost] Verbindung zum Remote-Server localhost mit der folgenden Fehlermeldung fehlgeschlagen: Der WinRM-Client die Anfrage nicht verarbeiten kann. Die CredSSP-Authentifizierung ist derzeit in der Client-Konfiguration deaktiviert. Ändern Sie die Client-Konfiguration und versuchen Sie erneut die Anfrage . Die CredSSP-Authentifizierung muss auch in der Serverkonfiguration aktiviert sein. – obfuscate
lief ich dies von beiden Servern - ich den gleichen Fehler, wenn ich es sowohl aus dem ursprünglichen Server (Build Server) und den Zielserver ausgeführt - ich auch Anmeldeinformationen auf dem Zielserver zu delegieren zu nur aktiviert sicher zu sein .. immer noch die gleichen Fehler :(- könnte es sein, dass locuser sein sollte .. mit enable-WSManCredSSP nicht sicher, wie das tun, obwohl so konfiguriert werden, ich kann nicht einmal läuft Powershell-Konsole als admin, angemeldet als locuser – obfuscate