Подключение с ПК с Windows 7 через SSH к серверу Ubuntu с помощью PuTTY, Я получаю несколько ошибок на экране:
Т.е. Это:
Я подключился к тому же серверу Ubuntu с терминалом и SHH из Mac OS X и не получаю искажений экрана (т.е. все выглядит и работает правильно). Я уже пытался поиграть с настройками шрифта внутри PuTTY, изменив его с Courier New на Consolas, но безуспешно.
Поэтому мой вопрос:
Как настроить PuTTY для правильного отображения специальных символов, а не двойного рисования / перезаписи строк экрана?
Вы почти наверняка установили неправильный набор символов в ваши настройки PuTTY.
Проверьте набор символов в удаленной системе, выполнив команду:
locale
Это должно вернуть что-то вроде:
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Поэтому проверьте настройки PuTTY в Перевод и убедитесь, что у вас есть UTF-8
установить как набор символов.
Возможно, вам также придется изменить настройку рисования линий, но, вероятно, это маловероятно.
У меня возникла проблема с Debian aptitude
программа, хотя в качестве набора символов у меня был UTF-8. Что сработало для меня, так это установить для 'Connection> Data>' Terminal-type string 'значение' putty 'вместо' xterm '- очевидно, Putty игнорирует последовательность символов для переключения в режим рисования: http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/utf8-plus-vt100.html
Кроме того, если UTF-8 настроен неправильно, вы можете запустить его как mc -ac.
Кредиты: http://blog.acsystem.sk/linux/midnight-commander-utf8-line-drawing-characters-problem
Двумя основными факторами являются Window / Translation UTF-8 в параметрах замазки и локали в Linux, как указано здесь и во многих других местах.
Кроме того, может помочь шпатлевка для схватывания Подключение / Данные / Тип терминала строка к замазка, и / или в Linux для export NCURSES_NO_UTF8_ACS=1
. Эти двое также упоминаются в нескольких местах.
Но: вы все равно можете получать блоки для определенных символов, потому что шрифты по умолчанию, такие как Courier и Lucida Console, не содержат всех символов Unicode. Загрузить и установить http://dejavu-fonts.org/wiki/Download, и установите шпатлевку для ее использования.
Этот последний трюк был нужен мне, чтобы получить noping
(рекомендуется!) отображать все графические символы.
Для всех вас, бедных старых парней из VMS, которые оказались здесь:
PuTTY → Окно → Перевод → Удаленный набор символов → DEC-MCS
работал у меня.
Через 15 лет я снова разозлился и снова погуглил, нашел это, выбрал
изменить настройки → окно → перевод → удаленный набор символов → «использовать кодировку шрифта»
и это исправило это.
В моем случае (Ubuntu 14.04) проблема была вызвана отсутствием
UsePAM yes
запись в / etc / ssh / sshd_config, поскольку /etc/pam.d/sshd конфигурация pam по умолчанию отвечает за загрузку / etc / default / locale в среду пользователя.
Я искал много решений для этого при использовании машины Docker (как локали, так и на машинах, настроенных системным администратором). В моей Putty все было хорошо (у меня было UTF-8
), Я использовал также другой клиент SSH и имел точно такую же проблему.
Бег:
mc -ac
решал проблему (но не полностью) и искал полное решение.
Прочитав множество предложений, я наконец нашел тот, который решил мою проблему.
В терминале при запуске:
locale
проверьте, какой языковой стандарт вы установили. У меня по умолчанию C
локаль.
Чтобы проверить все установленные локали, запустите locale -a
У меня например:
C
C.UTF-8
POSIX
по умолчанию.
Решение экспортирует LANG
переменная с C.UTF-8
локаль вот так:
export LANG="C.UTF-8"
Очевидно, вы можете добавить это в .bashrc
чтобы он автоматически устанавливался в вашем профиле.
Окно → Перевод → «Включить рисование линий VT100 даже в режиме UTF-8».
Это исправляет отображение обоих mc
и wavemon
для меня.
Я должен был установить на Окно → Перевод страница, набор символов:
ISO-8859-1: 1998 (Latin-1, Западная Европа)
Тогда и только тогда символы штриховки отображались правильно.
Другая причина, так или иначе связанная с pam, может повлиять на хосты с аутентификацией powerbroker / pbis / аналогично.
grep /etc/pam.d для возникновения "lsass":
grep -r lsass /etc/pam.d
если вы видите в выводе что-то вроде:
/etc/pam.d/common-session:session sufficient pam_lsass.so
тогда это, вероятно, основная причина проблемы. Быстрое исправление - заменить «достаточно» на «необязательный» рядом с модулем pam_lsass, чтобы он выглядел так:
/etc/pam.d/common-session:session optional pam_lsass.so
/etc/pam.d/common-session (или другой файл с аналогичной записью - их может быть немного), вероятно, включен /etc/pam.d/sshd до загрузки pam_env, поэтому, если обработка модулей pam завершена до того, как дело дойдет до pam_env, / etc / default / locale не загружается в пользовательское окружение, и у вас есть искаженные символы.
Как упоминалось во многих ответах:
Шпатлевка> Окно> Перевод> Удаленный набор символов> UTF8
это решение.
Но тогда не забудьте пойти в Сессия> Настройки по умолчанию и ударил Сохранить. Никакое сообщение не будет отображаться, чтобы подтвердить успех, но оно действительно станет значением по умолчанию:
У меня работает mc (установите locale на en):
$ LC_ALL=en mc
то, что сработало для меня, было «Соединение, Данные, Строка типа терминала = ansi» плюс «Окно, Перевод, Удаленный набор символов = Использовать кодировку шрифта», затем set TERM=ansi
на стороне unix.
PS. Не забудьте выключить умные кавычки, если вы вынуждены использовать MS-Word.
Моя проблема заключалась в том, что шпатлевка настроена как UTF-8, но удаленная система - это ISO-8859-1.
Западная Европа, поэтому я заменил его на шпатлевку, и все работало нормально.