Символы кодируются дважды, когда я прошу, чтобы SSH повторно прикрепил экранную сессию на удаленном хосте

Сообщение об ошибке, вероятно, прибывает из ssh на Вашей собственной машине. Источник

Это происходит если ssh не может найти Ваше имя пользователя в passwd база данных.

Можно попытаться работать getent passwd $USERNAME многократно и наблюдение, если это перестало работать.

В зависимости от как passwd поиск настроен, попробуйте один из них:

  • Удостоверьтесь, что Ваше имя пользователя появляется в /etc/passwd
  • Гарантируйте это sssd или nscd работает правильно, при необходимости
  • Удостоверьтесь, что Ваше соединение с сервером учетной записи, например, NIS, LDAP, и т.д. работает
  • Проверьте системные файлы журнала на своем компьютере (/var/log/messages, /var/log/syslog, и т.д.)

Если Вы отправляете вывод grep '^passwd' /etc/nsswitch.conf, наряду с любыми интересными частями ssh -vv вывод и системные журналы, люди могут, вероятно, помочь больше.

2
23.05.2017, 15:40
2 ответа

, который предлагает экран , который вы прикрепляете свой сеанс, чтобы подумать, что ваш терминал не находится в UTF-8.

Это думает, например, (если он предполагает, что Charset - это ISO-8859-1), что 0xc3 , исходящее из терминального устройства, означает ã .

Ссылка экрана, однако, работает в экране UTF-8 ( - это эмулятор терминала, который может быть прикреплен к различным типам клемм).

Итак, при наборе Ä , вы отправляете 0xC3 0xa4 . Экран понимает, что вы печатаете два символа ( ã и ¤ ). Это необходимо преобразовать их в свой эквивалент UTF-8.

На дисплее эти символы UTF-8 преобразуются в эквивалент ISO-8859-1, поэтому вы видите Ä , а не ¤ .

Вам нужно сказать экран , что ваш терминал является UTF-8.

Обычно это достаточно, чтобы установить локаль в UTF-8.

Большинство развертываний SSH передают информацию о локали от клиента к удаленной команде. Если ваш локаль на клиенте - это UTF-8, то либо SSH не передает переменные среды локали, или SSHD не принимает их, или локаль на стороне клиента не является одной из поддерживаемых на сервере или ваш ~ / .bashrc на сервере как-то переоценивает его.

В любом случае, делать:

ssh -t remotehost LANG=fi_FI.UTF-8 screen -dr

(убедившись fi_fi.utf-8 действительно является локалом, поддерживаемой на удаленном хосте, см. Locale -a , чтобы проверить) должен почини это.

3
27.01.2020, 22:00

Экран имеет вариант для работы в режиме UTF-8 :

  Экран запуска в режиме UTF-8.
  Эта опция говорит экрану, что ваш терминал отправляет и
  понимает закодированные символы UTF-8.
  Это также устанавливает кодировку по умолчанию
  Для новых Windows на `utf8 '.
 
1
27.01.2020, 22:00

Теги

Похожие вопросы