Wie kann man Farben mit Win32-OpenSSH und Putty aktivieren?

768
David

Zusammenfassung

Es scheint einen Fehler in Win32-OpenSSH zu geben, der die Anzeige von Farben in bestimmten Terminalemulatoren wie PuTTY und Mintty verhindert.

Win32-OpenSSH scheint die Farbwechselsequenz "\ 033 [32m \ 033 [40mtest"] durch "\ 033 [0; 39; 24; 27; 32; 40; mtest" zu ersetzen m. Wenn Sie dieses Semikolon entfernen, werden die Farben korrekt angezeigt.

Einzelheiten

Ich habe Win32-OpenSSH-Win64 (Version 0.0.24.0) gemäß https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH installiert .

ich setze

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShell="C:\Program Files\GIT\bin\bash.exe"   Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShellCommandOption="-c" 

Mit meinem Computer einloggen mit

ssh localhost 

Ich bekomme keine Farbausgabe mit PUTTY und nicht mit "Git Bash for Windows", aber ich bekomme Farben mit der nativen "cmd.exe" und mit "Bash on Ubuntu on Subsystem for Linux", die mit demselben lokalen Server verbunden sind.

Das Problem scheint auf ungewöhnliche Escape-Sequenzen zurückzuführen zu sein. Die Protokollierung aller Session-Ausgaben in PuTTY zeigt Escape-Sequenzen, die durch ein Semikolon abgeschlossen werden: "\ 033 [0; 39; 24; 27; 32; 40; mtest" und PUTTY scheint sie nicht verarbeiten zu können. Escape-Sequenzen ohne das letzte Semikolon, z. B. "\ 033 [0; 39; 24; 27; 32; 40mtest", werden von PUTTY korrekt verarbeitet.

Diese ungewöhnlichen Escape-Sequenzen scheinen von Win32-OpenSSH eingeführt worden zu sein. Im Gegensatz dazu erzeugt der Bitvise-SSH-Server die Escape-Sequenz "\ 033 [32m \ 033 [40mtest"].

1
PuTTY interpretiert sie tatsächlich korrekt - ein leerer Parameter entspricht 0, was leider "Formatierung zurücksetzen" bedeutet. (Mit anderen Worten, "\ 033 [0; 39; 24; 27; 32; 40; mtest" ist gleichbedeutend mit "\ 033 [0; 39; 24; 27; 32; 40; 0mtest"), was zu "\" zusammenbricht. 033 [0mtest`.) Ich empfehle, einen Fehlerbericht an die WSL-Entwickler zu senden. grawity vor 6 Jahren 3
Das Problem scheint also mit OpenSSH zu sein. Gibt es eine Möglichkeit, OpenSSH daran zu hindern, das abschließende Semikolon hinzuzufügen? David vor 6 Jahren 0
Klingt wieder wie ein Fehler im OpenSSH-Port von Windows. (Und die Tatsache, dass WSL Farben zeigt, würde wahrscheinlich auch auf einen Fehler in WSL hinweisen.) grawity vor 6 Jahren 0
siehe GitHub-Probleme https://github.com/PowerShell/Win32-OpenSSH/issues/1005 und https://github.com/Microsoft/console/issues/44 und David vor 6 Jahren 0

0 Antworten auf die Frage