Auf der Microsoft Doc Webseite wird man schnell fündig wie man unter Ubuntu 20.04 die aktuelle Powershell installiert. Anbei der Link Powershell under Linux.
cd Downloads/ sudo apt update sudo apt install -y wget apt-transport-https software-properties-common wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get update sudo add-apt-repository universe sudo apt-get install -y powershell pwsh PowerShell 7.1.0 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /home/k3ops/Downloads>
Enter-PSSession
Powershell installiert und gestartet, versucht man eine Remoteverbindung über die Powershell mit z.B. Enter-PSSession herzustellen, hagelt es gleich einmal den folgenden Fehler.
PS /home/k3ops/Downloads> Enter-PSSession -ComputerName ipadresse Enter-PSSession: This parameter set requires WSMan, and no supported WSMan client library was found. WSMan is either not installed or unavailable for this system.
Howto Fix
Exit und zurück zur Bash um mittels ldd die Abhängigkeiten zu prüfen.
ldd /opt/microsoft/powershell/7/libmi.so linux-vdso.so.1 (0x00007fff9617c000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2a180a2000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2a1809c000) libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007f2a1808a000) libssl.so.1.0.0 => not found libcrypto.so.1.0.0 => not found libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2a17e98000) /lib64/ld-linux-x86-64.so.2 (0x00007f2a182ad000) libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f2a17e6a000) libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007f2a17e62000)
Libssl.so.1.0.0 und libcrypto werden nicht gefunden, um sich das genauer anzuschauen installieren wir schnell noch mlocate und lassen uns mit locate den Ort anzeigen wo sich die libssl.so.1.0.0 befindet.
sudo apt install mlocate sudo updatedb locate libssl.so.1.0.0 /opt/microsoft/powershell/7/libssl.so.1.0.0 /snap/core18/1880/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
Unter /opt/microsoft/powershell wird uns eine libssl.so.1.0.0 angezeigt, jedoch wenn man dies weiter prüft sieht man das dies nur ein Softlink ist der auf eine libssl.so.10 zeigt die garnicht vorhanden ist ! Es ist auch keine libssl unter einem frischen Ubuntu 20.04 installiert und anscheinend wird die Abhängigkeit auch garnicht mitinstalliert, obwohl das Powershell-Paket über die Repos installiert wurde.
Installieren der libssl.so und der libcrypto.so
sudo apt install libssl-dev sudo apt list --installed | grep libssl* WARNING: apt does not have a stable CLI interface. Use with caution in scripts. libss2/focal,now 1.45.5-2ubuntu1 amd64 [Installiert,automatisch] libssh-4/focal-updates,focal-security,now 0.9.3-2ubuntu2.1 amd64 [Installiert,automatisch] libssh-gcrypt-4/focal-updates,focal-security,now 0.9.3-2ubuntu2.1 amd64 [Installiert,automatisch] libssl-dev/focal-updates,focal-security,now 1.1.1f-1ubuntu2.1 amd64 [installiert] libssl1.1/focal-updates,focal-security,now 1.1.1f-1ubuntu2.1 amd64 [Installiert,automatisch] locate libssl.so.1.1 /snap/core18/1880/usr/lib/x86_64-linux-gnu/libssl.so.1.1 /snap/gnome-3-34-1804/36/usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
K/Ubuntu 20.04 installiert die Version libssl.so.1.1 und zu finden ist die unter /usr/lib/x86_64-linux-gnu/. Nun setzt man einfach die entsprechenden Softlinks in das Verzeichnis wo ldd ein paar Schritte weiter oben die Datei sucht, nämlich unter /lib/x86_64-linux-gnu. Achtung wir setzen die Softlinks auf den Namen der gesuchten library also nicht XXX.so.1.1 sondern auf XXX.so.1.0.0.
Softlinks erstellen
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /lib/x86_64-linux-gnu/libssl.so.1.0.0 sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 ldd /opt/microsoft/powershell/7/libmi.so linux-vdso.so.1 (0x00007ffe02b7c000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe1090c7000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe1090c1000) libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fe1090af000) libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fe10901c000) libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fe108d46000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe108b54000) /lib64/ld-linux-x86-64.so.2 (0x00007fe1092d2000) libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fe108b26000) libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fe108b1e000)
Installieren GSS-NTLMSSP
Nachdem ldd alle Librarys findet tritt ein weitere Fehler bei dem Enter-PSSession Befehl auf.
Hier muss gss-ntlmssp noch installiert werden.
apt install gss-ntlmssp
Enter-PSSession
Jetzt kann man sich wieder Remote mit der Powershell eines Windows Gerätes verbinden wenn die Verbindung in der Windows-Firewall freigegeben wurde. Zu beachten ist das „-Authentication negotiate“ verwendet wird.
k3ops@kubuntu-vm:~$ pwsh
PowerShell 7.1.0
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
PS /home/k3ops> Enter-PSSession -ComputerName 10.10.2.10 -Credential $u -Authentication negotiate
PowerShell credential request
Enter your credentials.
User: DOMAIN\username
Password for user DOMAIN\username: XXXXXX
[XXX.XXX.XXX.XXX]: PS C:\Users\k3ops\Documents> cd ..
[XXX.XXX.XXX.XXX]: PS C:\Users\k3ops> cd ..
[XXX.XXX.XXX.XXX]: PS C:\Users> cd ..
[XXX.XXX.XXX.XXX]: PS C:> ls
Verzeichnis: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 01.08.2019 15:49 Intel
d----- 12.09.2016 13:35 Logs
d----- 01.08.2019 16:59 OEM
d----- 02.08.2019 11:53 PerfLogs
da---- 05.04.2020 16:23 PostInstall
d-r--- 28.02.2020 11:12 Program Files
d----- 31.08.2020 10:21 Program Files (x86)
d----- 10.12.2020 23:58 tmp
d-r--- 16.12.2020 14:12 Users
d----- 16.12.2020 11:49 Windows
d----- 14.08.2019 10:56 _Scripts
-a---- 12.02.2020 12:11 1024 .rnd
-a---- 19.11.2020 15:14 25 log.txt
-a---- 01.08.2019 16:59 0 SVIMSP_OLD
[XXX.XXX.XXX.XXX]: PS C:>