Как включить цвета с Win32-OpenSSH и Putty?

646
David

Резюме

Кажется, в Win32-OpenSSH есть ошибка, которая не позволяет отображать цвета в некоторых эмуляторах терминала, таких как PuTTY и mintty.

Win32-OpenSSH, по-видимому, заменяет последовательность выхода цвета "\ 033 [32m \ 033 [40mtest" на "\ 033 [0; 39; 24; 27; 32; 40; mtest", и проблема, похоже, заключается в последней точке с запятой перед м. Сняв эту точку с запятой, цвета отображаются правильно.

подробности

Я установил Win32-OpenSSH-Win64 (версия 0.0.24.0) в соответствии с https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH .

Я поставил

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

Вход в мою машину с

ssh localhost 

Я не получаю вывод цветов с помощью PUTTY, а не с помощью «Git Bash для Windows», но я получаю цвета с помощью «cmd.exe» и «Bash в Ubuntu в подсистеме для Linux», подключающихся к тому же локальному серверу.

Кажется, проблема связана с необычными escape-последовательностями. Регистрация всех выходных данных сеанса в PuTTY показывает escape-последовательности, которые заканчиваются точкой с запятой: "\ 033 [0; 39; 24; 27; 32; 40; mtest", и PUTTY, похоже, не в состоянии их обработать. Последовательности перехода без последней точки с запятой, например, "\ 033 [0; 39; 24; 27; 32; 40mtest", обрабатываются PUTTY правильно.

Эти необычные escape-последовательности, кажется, введены Win32-OpenSSH. В отличие от этого, Bitvise SSH Server создает управляющую последовательность "\ 033 [32m \ 033 [40mtest" ".

1
PuTTY интерпретирует их правильно - пустой параметр эквивалентен 0, что, к сожалению, означает «сбросить все форматирование». (Другими словами, `\ 033 [0; 39; 24; 27; 32; 40; mtest` эквивалентно` \ 033 [0; 39; 24; 27; 32; 40; 0mtest`), который падает до `\ 033 [0mtest`.) Предлагаю отправить отчет об ошибке разработчикам WSL. grawity 6 лет назад 3
Таким образом, проблема, похоже, связана с OpenSSH. Есть ли способ предотвратить добавление окончательной точки с запятой в OpenSSH? David 6 лет назад 0
Опять же, звучит как ошибка в порте Windows OpenSSH. (И тот факт, что WSL показывает цвета, вероятно, также указывает на ошибку в WSL.) grawity 6 лет назад 0
см. проблемы GitHub https://github.com/PowerShell/Win32-OpenSSH/issues/1005 и https://github.com/Microsoft/console/issues/44 и David 6 лет назад 0

0 ответов на вопрос