Schlagwort-Archive: Windows 10

OpenSSH in Windows 10

Im aktuellen Windows-10-Build ist der OpenSSH-Client als Beta-Feature enthalten. Mit

dem Build 1709 „Fall Creators Update“ hat Windows 10 auch ein paar versteckte Features eingeführt, die für Linux Admins und Poweruser interessant sind. Das beste für Linux- und Unix-Anwender ist vermutlich die Integration des SSH-Client und Server, wie bereits vor zwei Jahren angekündigt, der auf OpenSSH basierte SSH-Client.

Windows 10 SSH-Client

Um den SSH-Client auf Windows 10 zu aktivieren, gib man in der Eingabeaufforderung folgendes Command ein.

Anschließend kann der Client, der unter dem Pfad  „C:\WINDOWS\System32\OpenSSH“ installiert wurde, aus dem CLI wie von der Linux Shell gewohnt genutzt werden, beispielsweise auch ein lokales und Remote-Port-Forwarding steht zur Verfügung.

Die Windows-native OpenSSH-Implementierung, die Remote-Sitzungen in der Eingabeaufforderung „cmd“ und in der PowerShell ermöglicht, erlaubt nun ohne SSH-Tools auszukommen, wie es das Windows-Subsystem für Linux (WSL) mit bash on Windows, PuTTY oder KiTTY und dergleichen wäre.

Sollen Dienstprogrammen wie vi, top, man, multitail und weitere verwendet werden, macht man die besten Erfahrungen, in dem man die Windows SSH-Client Verbindung mit einem * nix-Server hat, das Terminal für einen xterm-ähnlichen Rendering-Modus konfiguriert.

TTY Support in Windows OpenSSH

Öffne hierzu die Eingabeaufforderung (cmd) und klicke mit der rechten Maustaste im Fenster oben links auf das kleine Icon    dann unten auf Eigenschaften.

Abbildung: Eigenschaften von Eingabeaufforderung

Stelle sicher dass Legacykonsole (erfordert Neustart) nicht deaktiviert ist.

Des Terminal Fenster sollte eine probate Größe haben, entsprechend zum gewählten Font und dessen Größe.

Abbildung: Eigenschaften von Eingabeaufforderung – Layout

Im Register Layout die Fensterbreite und Buffergrösse auf 110 setzen.

Für TTY und PTY wird der VT100 Terminal Emulator unterstützt, dazu benötigt es die Umgebungsvariable XTERM diese in der Windows MMC-Konsole mit +R  control sysdm.cpl,,3 gesetzt werden kann.

Unten auf Umgebungsvariablen klicken und im Abschnitt Systemvariablen auf Neu klicken und die Variable TERM=xterm eintragen.

Das Fenster schließen und wieder öffnen, nun ist das TTY Terminal in einer SSH Verbindung anwendbar.

Hinweis zur Implementierung

Windows verfügt über keine integrierte Unterstützung für ein Pseudoterminal.

Die Windows-Version des OpenSSH-Servers implementiert einen VT100 PTY, indem Windows Console-Ereignisse abgefangen werden. Dies ist in ssh-shellhost.exe implementiert, verbunden mit sshd über stdout input/output. Auf einer high-level Ebene fungiert ssh-shellhost.exe als Vermittler zwischen sshd und einer Windows-Konsole, die Folgendes ausführt:

Interpretiert eingehende VT100, Prozesse und Aufrufe von Windows Console IO.

Verarbeitet die Ereigniswarteschlange der Windows-Konsole (Ausgabe), übersetzt sie in VT100 und gibt sie auf stdout aus.

 

OpenSSH on Windows

OpenSSH ist das führende Konnektivitätstool für die Remote-Anmeldung mit dem SSH-Protokoll in Unix/Linux Umgebungen. OpenSSH verschlüsselt den Datenverkehr, darüber hinaus bietet OpenSSH eine große Auswahl an sicheren Tunneling-Funktionen, mehrere Authentifizierungsmethoden und anspruchsvolle Konfigurationsoptionen.

Für die Remoteverwaltung in heterogenen Netzwerken, haben Windows und Unix/Linux nicht viel gemeinsames. Unter Unix/Linux ist der Remote-Zugriff per SSH ein Standard für Datentransfer, Remote-Terminal sowie Port-Forwarding für Remote-X. Unter Windows ist ein wirklicher Standard noch nicht erreicht, neben WinRM, PowerShell-Remote, RDS und RSAT gibt es einige mehr. Hinzugekommen ist nun auch ein Port des freien OpenSSH Client/Server Tools, dies ermöglicht weitere Integration und Verwaltung von Windows und Linux/Unix Umgebungen.

Die OpenSSH Suite ist auf Github verfügbar und besteht aktuell aus folgenden Tools:

  • Remote-Operationen werden mit ssh, scp und sftp durchgeführt
  • Key Management mit ssh-add, ssh-keygen
  • Die Service-Seite besteht aus sshd, sftp-server und ssh-agent
Win32 OpenSSH Installation

Nach dem Download das Zip-Archive in C:\Program Files\OpenSSH entpacken.

Starte PowerShell als Administrator und wechsle in den Pfad C:\Program Files\OpenSSH und führe folgende Aktion aus.

Die SSH-Host-Schlüssel generieren mit allen Schlüssel die sshd für Key-auth erwartet.

Die Firewall auf Windows Server für SSH erweitern.

Bei der Windows Workstation werden eingehende SSH Verbindungen wie folgt erlaubt.

Der SSH-Agent hält den privaten Schlüssel im Arbeitsspeicher.

Nun können SSH Verbinden aufgebaut werden.

openSSH-client

Den SSH Daemon Auto-start (Boot) aktivieren.

Ein Schlüsselpar wird wie folgt generiert.

 

 

PHP mit Windows 10 entwickeln

Der bei Windows 10 verfügbare Web-Server kann nicht nur statische HTML Seiten oder ASP-Code ausführen, er unterstützt auch PHP-Anwendungen. Einzig die Open-Source PHP-Binaries müssen separat heruntergeladen und installiert werden.

IIS Web-Server bereitstellen
PHP Windows Binaries Installation
Der Lightweight Code Editor
Debugging mit VS Code

Wer dynamische PHP Web-Seiten entwickeln möchte, benötigt hierfür nicht mehr den kompletten LAMP-Stack, wie beispielsweise in einer Linux Virtual Machine oder einer Windows-Implementierung wie XAMPP. Die beim IIS installierten PHP-Module und SQL-Server-Express erfüllen den Zweck oft auch. Falls es doch eine LAMP Umgebung sein muss, steht das Windows-Subsystem für Linux zur Verfügung, hierzu das einrichten von bash on Windows ebenfalls hier in diesem Blog.

IIS Web-Server bereitstellen

Die erforderlichen Internetinformationsdienste (IIS) werden wie folgt installiert, auf Systemsteuerung unter Programme => Programme und Features => Windows-Features aktivieren oder deaktivieren.

internetinformationsdienste
Internetinformationsdienste

Die erforderlichen Berechtigungen für den Ordner wwwroot sollten für Benutzer erteilt werden, diese später php-Dateien erstellen und bearbeiten sollen. Dies aus dem IIS-Manger (Inetmgr) oder Explorer => Eigenschaften => Sicherheit, Benutzer hinzufügen und Vollzugriff geben.

PHP Windows Binaries Installation

Nun besorgt man sich das passende PHP-Modul, das man von php.net herunterladen kann. Dort wählt man die gewünschte Version aus, dabei muss man sich zwischen der x86- und x64-Architektur entscheiden.

PHP Download: https://windows.php.net/download

Die PHP-Module liegen in einer Thread-Safe- und einer Non-Thread-Safe-Ausführung vor. Die IIS benötigen die Thread-Safe-Variante nicht.

Nach dem Download des ZIP-Archivs entpackt man dieses und kopiert den Inhalt in ein Verzeichnis, zum Beispiel unter C:\PHP. Danach lässt sich PHP einfach über den IIS Manager einbinden.

Mit  +R = inetmgr wird der Internetinformationsdienste (IIS)-Manager gestartet.

Internetinformationsdienste (IIS)-Manager
Internetinformationsdienste (IIS)-Manager

Ein Doppel-Klick auf Handlerzuordnungen und rechts im Fenster Aktionen auf Modulzuordnung hinzufügen klicken.

Die folgenden Werte eintragen um den CGI-PHP Handler zu erstellen.

Modulzuordnung hinzufuegen
Modulzuordnung hinzufügen

Nach dem Speichern der eingegebenen Daten ist ein Neustart des Web-Servers erforderlich. Dies kann man im IIS Manager im Abschnitt Aktionen veranlassen.

Den Suchpfad für C:\PHP erstellt man unter Systemsteuerung\System und Sicherheit\System  => Erweiterte Systemeinstellungen unten auf den Button Umgebungsvariablen klicken.

Umgebungsvariable bearbeiten
Umgebungsvariable bearbeiten

Um zu prüfen ob IIS nun tatsächlich PHP-Skripte ausführen kann, erstellt man eine Datei mit dem Inhalt:

und kopiert diese unter dem Dateiname phpinfo.php in das webroot-Verzeichnis (C:\inetpub\wwwroot). Ruft man nun phpinfo über die entsprechende URL im Browser (https://localhost/phpinfo.php) auf, sollten detaillierte Informationen über die installierte PHP-Version ausgegeben werden.

Nun können PHP Anwendungen entwickelt und getestet werden, hierbei bietet sich eine grosse Anzahl von Tools und Entwicklungsumgebungen an, geeignet ist hier das Open Source Programm Visual Studio Code. Bis auf den Namen und einigen Funktionen wie IntelliSense hat VS Code nichts mit Visual Studio gemeinsam.

Der Lightweight Code Editor

Im Gegensatz zu Visual Studio von Microsoft ist Visual Studio Code, kurz auch VS Code, ein Quelltext-Editor. Es handelt sich um kein vollwertiges IDE Tool, sondern um ein Text Editor der technologisch auf dem Electron (Framework) basiert, mit einer Reihe von leistungsstarken Funktionen, wie man es auch bei IDE Anwendungen findet, wie IntelliSense, Debugging und Git Source Control Integration. Er dient vorrangig der Entwicklung von Webanwendungen und ermöglicht die Programmierung unter C#, C++, CoffeeScript, CSS, HTML, Java, JSON, Perl, PHP, PowerShell, Python, Ruby und weitere mehr. Unterstützt wird VS Code von zahlreichen Extensions, damit lässt sich der Editor fast beliebig erweitern. VS Code wird hauptsächlich von einem Team in der Schweiz entwickelt, welches von Erich Gamma geleitet wird.

VS Code ist eine Cross-platform für Linux, Mac und Windows,
Download URL https://code.visualstudio.com/download

Im Unterschied zu Visual Studio arbeitet VS Code nicht mit Projektdateien, sondern auf Basis von Codedateien und Ordnern. Nach dem herunterladen und installieren erstellt man sich am besten ein Projekt Ordner, Beispielsweise codes\php hier unter dem Dokumenten Ordner.

Mit code . werden gleich alle Dateien die sich im Ordner befinden in VS Code geladen.

Hier sollen wir die VS Code Konfiguration für PHP erweitern, dies geschieht in dem man auf Datei => Einstellungen => Benutzereinstellungen geht, die Datei settings.json wird geöffnet, im rechten Edit Panel können die default settings überschreiben werden. Bei php.validate.executablePath muss der absolute Pfad zur PHP-Runtime eingetragen werden, hier ist es C:\php\php.exe. Mit Ctrl+S speichert man die Änderungen.

Die Konfigurationsdatei: %APPDATA%\Code\User\settings.json

Damit wir php Code Debuggen können braucht es die Xdebug Extension der entsprechenden Version von https://xdebug.org/download.php

Am besten ruft man phpinfo.php aus dem Browser auf, z.B. https://localhost/phpinfo.php und kopiert den Quelltext der Ausgabe von phpinfo in die Box Tailored Installation Instructions. URL https://xdebug.org/wizard.php

Füge die vollständige Ausgabe von phpinfo () ein (Copy & Paste der HTML-Version, oder den HTML-Quelltext) und klicke den Button Analyse my phpinfo() output, um den passenden Download Link und die Installationsanweisungen zu erhalten.

Ausgegeben wird eine Instruktion passend zur eigenen Umgebung, folge der Anweisung.

Wie gezeigt wird die DLL-Datei in den Ext. Ordner unter dem PHP-Runtime Pfad kopiert, nach C:\php\ext\php_xdebug-2.5.0-7.1-vc14-nts-x86_64.dll

Die Datei C:\PHP\php.ini muss noch editiert werden, die folgenden Zeilen werden am ende hinzugefügt.

Nach der Installation der Xdebug Extension wird VS Code gestartet mit  +R und code

Die PHP Debug Extension wird aus dem Visual Studio Marketplace installiert.

Hinzu kommen noch die Extensions Code Runner, PHP Code Format und PHP IntelliSense, diese direkt aus VS Code Extensions mit Ctrl+Shift+X heruntergeladen und installiert werden können, oder mit Ctrl+P : ext install code-runner

Im VS Code Explorer mit dem öffnen einer php Datei kommt man mit F5 in den Debug Modus, diesen wir für PHP wählen.

Es wird die json-Launcher Konfigurationsdatei geöffnet.

Der Xdebugger horcht nun auf Port 9000, die Werte können übernommen werden und mit Ctrl+S gespeichert werden. VS Code legt nun in jedem Projekt Ordner ein .vscode Ordner an, in diesem die Datei launch.json angelegt wird.

Wenn man sich jetzt noch Node.js besorgt, ist man mit php nun auch für die Java Syntax Prüfung und das Debugging komplett.

Debugging mit VS Code

Mit F5 wird der Debugger gestartet, hier ein kleiner Java Script, bevor das Debugging nun von statten gehen kann, muss der Launcher launch.json für den Script app.js erstellt werden, hierzu klickt man oben auf das kleine Zahnrädchen, die Datei launch.json wird in den Editor geladen, nun klickt man auf Konfiguration hinzufügen, der neue abschnitt wird übernommen, und unser app.js bei Program hinter {workspaceRoot} hinzugefügt.

VisualStudioCode_launch.json
Visual Studio Code launch.json

Der Debug Launcher mit Ctrl+S speichern, die Datei launch.json befindet sich nun im Unterordner .vscode.

Rechts neben der Zeilennummer werden die Breakpoints gesetzt, mit F11 geht es schrittweise zum nächsten Breakpoint.

VisualStudioCode_Debugging
Visual Studio Code Debugging

Die sonst blaue Statuszeile ist nun Orange, bezeichnend für den Debug Modus. Die IntelliSense Syntax Referenz wird mit Ctrl+Shift im Code aufgerufen.

VS Code Terminal
VS Code Terminal

Drückt man die Tasten Ctrl+Shift+! öffnet sich ein Terminal Fenster, in diesem mit dem Aufruf von node der Java Script sich ebenfalls ausführen lässt.

Erscheint die Meldung „Zurzeit ist kein Ordner geöffnet“ nach der Tasten Eingabe Ctrl+Shift+D oder mit klick auf das Debug Symol, geht man auf Datei => Ordner öffnen.. und wählt den Ordner mit den Dateien die man debuggen möchte. Nun kann man mit F5 den Debug Mode starten, falls launch.json nocht nicht erstellt wurde, wird diese generiert, die Datei launch.json kann über den VS Code Explorer geöffnet und ggf. angepasst werden. Es wird für jede Code Datei ein Eintrag in launch.json vorgesehen, bei „program“: „${workspaceRoot}/app.js“ wobei app.js die Datei ist die man Debuggen möchte.

CS Code Runner

Drückt man die Tasten Alt+Ctrl+N oder geht über das Kontext Menu Run Code, wird der Script ausgeführt, der Output wird unten ausgegeben.

Windows 10 Version und Build

Die Versionierung von Windows 10 ist komplexer geworden, weil neben der Major Version auch die Build Number und die Release ID erkennbar sein muss, auch um damit die Funktionalität des Systems zu beurteilen ist. Diese Informationen muss man aus diversen Quellen abrufen.

Mit Windows 10 hat Microsoft die Versionierung geändert. Mit der Build Number wird die Kernelversion von Windows bezeichnet. diese soll künftig anstelle der Windows Version stehen. Laut Microsoft soll Windows 10 bekanntlich die letzte Windows Version sein. Es bedeutet, dass Windows 10 nur noch per Update erneuert wird. Um welche Windows Installation es sich handelt, kann anhand der Build Number festgestellt werden.

Windows Version ermitteln

Mittels Eingabe des Befehles „ver“ aus der Eingabeaufforderung,  +R=cmd wird die Windows Version ermittelt:

windows version

Mit dem Befehl  +R=winver  wird auch die Build Number und die Edition ausgegeben.

Natürlich ist die Version und Build Number abfrage aus der PowerShell möglich.

windows version cmdlet

Adäquater erscheint die Ausgabe mit folgendem PowerShell Scriptlet.

windows_version_powershell_ise

Die Zeilen können in PowerShell ISE eingefügt und ausgeführt werden.

Linux Version ermitteln

Und wenn wir schon mal dabei sind, hier gleich die Ausgabe der Kernelversion einer Linux Distribution:

linux version

Und bei Mac OS X mit dem Befehl sw_vers aus dem Terminal:

OXS Version

Bash on Windows 10

Linux Bash Shell kommt auf Windows, ermöglicht durch die Zusammenarbeit zwischen Microsoft und Ubuntu Canonical. Bash kann über das Windows 10 Startmenü gestartet werden, damit ist man in der Lage eine vollständige Linux-Kommandozeilen-Umgebung zu erhalten.

Viele Entwickler bevorzugen Linux oder auch Mac OS X, da man aus der Bash Shell (Bourne-again shell) Zugriff auf ein ganzes Universum von Dienstprogrammen hat, was Windows oft nicht beinhaltet.

Bash on Windows ist keine virtuelle Maschine und auch kein Container, es basiert auch nicht auf Cygwin oder Wine.
Es bietet sich nun die alternative, Bash Scripts auf dem lokalen Windows Computer zu entwickeln und zu testen, Verbindungen zu Remote Linux Server oder einer virtuellen Maschine wie Virtualbox oder VMware Workstation sind nicht erforderlich.

Das Ziel ist es, Apps aus dem Windows Store die vollständig auf Ubuntu lauffähig sein werden und als Programm auf dem Desktop im Userspace laufen. Programme die für Linux kompiliert werden, können auch unter Windows kompiliert und lauffähig gemacht werden. Es können die Ubuntu apt-get Kommandos angewandt werden, um Programme herunterzuladen und sie zu installieren. Entwickler können Bash Skripte schreiben und diese auf Windows ausführen. Es ist angeblich so schnell wie die selben Dienstprogramme nativ auf Ubuntu Linux laufen.

Dies ist alles im neuen Subsystem von Windows 10 ab Build 14251 integriert. Die Dateien lxcore.sys und lxss.sys bilden das neue Windows Subsystem für Linux (WSL).

Canonical Dustin Kirkland ist begeistert von der Technologie, und erklärt es so: im Grunde eine Echtzeit-Übersetzung von Linux syscalls in Windows-Betriebssystem syscalls. Linux-Freaks betrachten es als eine Art inverse Wine-Ubuntu-Binärdateien die nativ in Windows ausgeführt werden können

Um Bash on Windows nutzen zu können ist Windows 10 als 64-bit Edition und min. Build 14251 erforderlich. Empfohlen wird auf das Windows 10 Anniversary Update zu gehen, damit ist man dann auf dem Build 14393 – Stand 2. Aug 2016.

Die Installation von Bash on Windows

Als erstes muss das Windows Subsystem für Linux (Beta) installiert werden. Mit den Tasten  +R das Ausführen Fenster öffnen, und mit dem Befehl:

die mmc-Konsole, Windows-Features aufrufen.

control_appwiz

Windows-Features

Weiter muss der Entwicklermodus aktiviert werden, über Systemsteuerung – Update und Sicherheit – Für Entwickler.

entwicklerfunktionen

Nach einem neustart stehen die Funktionen zur Verfügung.

Ubuntu Linux Installation

Starten lässt sich die Bash Shell über Start und der Eingabe bash

start_bash

Bei dieser Installation war es erforderlich, die Legacykonsole zu deaktivieren, dies geschieht über das öffnen einer Eingabeaufforderung (CMD) und mit rechts klick im Fensterbalken auf Eigenschaften.

legacykonsole

Beim ersten ausführen von bash.exe wird man die Nutzungsbedingungen zu akzeptieren gefragt. Welche wir mit „J* quittieren. Die Bash Shell wird aus dem Windows Store heruntergeladen und Installiert, weiter wird man aufgefordert ein Benutzerkonto und Passwort zu erstellen, dieser Benutzer muss nicht der selbe wie der von Windows sein.

Möchte man die Installation automatisieren, kann folgender Befehl in einer Eingabeaufforderung ausgeführt werden. Dies wird automatisch allen Aufforderungen zustimmen und den Standardbenutzer „root“ ohne Passwort vergeben.

Linux Software Installation

Sollen nun weitere Linux Pakete installiert werden, kann dies mit apt-get, dem Advanced-Packaging-Tool getätigt werden, als erstes sollten hier gleich alle Updates eingespielt werden.

Nach einigen Minuten ist Bash on Windows up-to-date, mit folgendem Befehl aus der Bash Shell oder direkt aus Windows ist das installieren der Linux Pakete möglich.

bash_ausfuehren

Das Windows Dateisystem kann so wohl von Bash on Windows erreicht werden, wie auch das Linux Dateisystem aus Windows.

bash_ls

explorer_lxss
%appdata%\local\lxss\rootfs

 

Grafische Anwendungen sind ausführbar sobald ein X Server zur Verfügung steht, ein solcher ist von Xming verfügbar, der X Window System Server for Windows lässt sich hier herunterladen und kann für Windows installiert werden.

xming

Damit das rendering einer grafischen Anwendung möglich wird, kann folgender Befehl aus der Bash Shell ausgeführt werden.

Nun können Bash Kommandos abgesetzt werden, dies auch aus Windows oder aus der PowerShell.

bash Befehle ausführen
bash Befehle ausführen

X Windows Applikationen wie nautilus oder gvim können ebenfalls direkt ausgeführt werden.

Bash on Windows Unity
Bash on Windows Unity