LINUX.ORG.RU

проблема с русскими именами файлов на сервере ssh

 


0

2

Проблема похожая на
https://forums.freenas.org/index.php?threads/Неверное-отображение-русских-сим...

Снова руссификация консоли только решение не помогло:

$ locale-gen ru_RU.UTF-8
Generating locales...
  ru_RU.UTF-8... up-to-date
Generation complete.



Синопсис

$ cat /etc/ssh/sshd_config | grep 'AcceptEnv LANG LC_'
AcceptEnv LANG LC_*

На сервере ubuntu 14.04 всё хорошо, всё работает. На клиентах win7 в xshell, консоль manjaro - вместо русских букв ???? и вместо рамки в mc хрень.

Что-то я не так насстроил, а что понять не могу. Понимаю,что проблемы на сервере, потому, что при заходе на другие сервера по ssh всё хорошо и в офтопике и на манджаре.

Из настроек локали делал это: https://bugzilla.gnome.org/show_bug.cgi?id=547350 но врядли это причем.

конфиг /etc/ssh/sshd_config дефолтный, кроме беспарольной аутентификации по RSA ключам.

Перед написанием безуспешно помучал гугла, но то ли я дурак, толи сани не едут.

★★★

Последнее исправление: hikikomori (всего исправлений: 2)

Ты уверен, что виндовому клиенту нужно именно UTF-8, а не CP-1251? Смотри locale сразу после логина

router ★★★★★
()
Ответ на: комментарий от router

$ locale
LANG=ru_RU.UTF-8
LANGUAGE=ru:en
LC_CTYPE=«ru_RU.UTF-8»
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=«ru_RU.UTF-8»
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=«ru_RU.UTF-8»
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=


Виндовый можно настроить иначе. Но виндовый на хостинг нормально ходит, значит дело не в этом.

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

Виндовый можно настроить иначе. Но виндовый на хостинг нормально ходит, значит дело не в этом.

Проблема у тебя где? Вот там и проверяй

router ★★★★★
()
Ответ на: комментарий от router

Проблема на моём сервере ssh. Кабы знал что проверять, то не писал бы тут. Авторизация по ключам ведь не может влиять на кодировку? локаль ru_RU.UTF-8 у меня в порядке...
Как диагностировать, почему клиенты не отображают русских букв?

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

Виндовый можно настроить иначе. Но виндовый на хостинг нормально ходит, значит дело не в этом.

т.е. ты не можешь/хочешь сравнить кодировки на сервере и на хостинге, и покрутить соответствующие настройки клиента хотя бы временно, чтобы понять в чем проблема?
язабан

anonymous
()
Ответ на: комментарий от hikikomori

Вижу ты человек военный, поэтому повторяю два разаА и медленно

Ты можешь воспроизвести проблему? Увидеть вопросы вместо русских букв?

Вот когда воспроизведёшь, тогда и начинай искать причину. Для особо одарённых - начни с команды locale

router ★★★★★
()
Ответ на: комментарий от router

Проблема стабильная. При входе на мой сервер вместо русских букв вопросы. Вывод команды locale я уже приводил. На клиенте с манджаро тоже самое, нет только LANGUAGE=ru:en
на клиенте с виндой в xshell выбрана utf8 кодировка.
Ранее проблемы на клиенте не было.

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

т.е. какими командами смотреть кодировку на сервере ты знаешь, а какими на хостинге — не знаешь? или ты про настройки клиента, как в нем кодировку переключать? так ты, вроде, говорил, что он виндовый, так что про это на винфаке спрашивай

anonymous
()
Ответ на: комментарий от anonymous

Я накануне рассвета начал это пилить, мозги уже в кучу.

На сервере хостинга где все отображается, locale такой:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE=C
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=


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

Про виндовый, если слух режет, можете забыть. Достаточно, что проблема есть между убунту сервером и манджаро клиентом.

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

$ grep -v '^#' /etc/ssh/sshd_config | grep -v '^$'
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Banner /etc/issue.net
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM no

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

по mc смотри настройки: Настройки -> Биты символов...
по файлам нужно понять на какой файловой системе лежат файлы с русскими буквами в названиях, в какой кодировке эти названия и с какими опциями замонтирован этот раздел; давай вывод команды mount и укажи путь, где лежат проблемные файлы

anonymous
()

Мне лень гуглить про xshell. В Putty укажи по пути Window/Translation/Character set translation/Remote character set: UTF-8

anonymous
()
Ответ на: комментарий от anonymous

Путти такое УГ, что я его сразу выбросил, как только узнал про xshell. Но дело не в нем, иначе бы в манджаро такой хрени не было.

В mc «Настройки -> Биты символов.» не нашёл такого. И зачем, если в голой консоли ls выдает теже ????
fs = ext4 в хомяке.

$ uname -a (сервер)
Linux 4.4.0-45-generic #66~14.04.1-Ubuntu SMP Wed Oct 19 15:05:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Local version string SSH-2.0-OpenSSH_7.3 (клиент manjaro)
Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 (сервер)



$ mount|grep home (файлы сервера)
/dev/sda6 on /home type ext4 (rw)

Локально файлы и папки с русскими именами нормально видно.

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

Локально файлы и папки с русскими именами нормально видно.

так бы сразу и сказал
значит проблема в клиенте
/thread

anonymous
()
Ответ на: комментарий от anonymous

В конфиге я ничего не напортачил?

Может это на что другое поменять?

$ cat /etc/ssh/sshd_config | grep 'AcceptEnv LANG LC_'
AcceptEnv LANG LC_*

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

очень вероятно
попробуй нормальным linux-клиентом зайти; если нет другой linux-машины, то прямо в консоли сервера зайди по ssh на локалхост; если проблем не будет, то причина в твоих клиентах, если будет, то, возможно, ssh-соединение вносит какие-то искажения при передаче

anonymous
()
Ответ на: комментарий от hikikomori

а зачем ты это прописал?
если у тебя на сервере родная кодировка не UTF-8, а какая-нибудь однобайтная, то такие проблемы возможны, но это тоже надо было руками так специально настраивать ибо utf-8 уже лет десять как дефолт

anonymous
()
Ответ на: комментарий от anonymous

Пробую зайти нормальным линукс клиентом из-под manjaro linux, грабли те же.
Пробовал sudo gedit /etc/ssh/sshd_config
менять AcceptEnv LANG LC_*
на
AcceptEnv LANG ru_RU
или
AcceptEnv LANG ru_RU.UTF-8

Конечно после этого sudo /etc/init.d/ssh restart
и перезаход на сервер.
И ничего.

Локально пока не могу, Host key verification failed.
Может ключ id_rsa.pub не так сам в себя добавил.
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Может в конфиге что не так? Или ключи как-то на кодировку влияют?

hikikomori ★★★
() автор топика
Ответ на: комментарий от anonymous

Дефолтовые настройки убунты. Так и было.
менять на другое или убирать пробовал.

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

зачем тебе вообще AcceptEnv? убери его и попробуй

ну, допустим, не умеешь настраивать беспарольный доступ, но зачем тогда это делать то? разреши доступ по паролю и пробуй

и еще покажи locale, выполненный в консоли сервера без ssh

anonymous
()
Ответ на: комментарий от anonymous

зачем тебе вообще AcceptEnv? убери его и попробуй



Он по умолчанию был в конфиге, я его не вписывал. Убирать пробовал - без эффекта.


ну, допустим, не умеешь настраивать беспарольный доступ, но зачем тогда это делать то? разреши доступ по паролю и пробуй



Беспарольный доступ необходимая мера безопасности.
А ключи используются только для входа, или ими кодируется и передача данных? я по пунктам помню что настраивал, ничего касающегося локалей не трогал.

и еще покажи locale, выполненный в консоли сервера без ssh



Локальный вывод locale сервера. Так уже показывал выше.

$ locale
LANG=ru_RU.UTF-8
LANGUAGE=ru:en
LC_CTYPE=«ru_RU.UTF-8»
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=«ru_RU.UTF-8»
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=«ru_RU.UTF-8»
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

hikikomori ★★★
() автор топика
Ответ на: комментарий от anonymous

Удалил все настройки, сбросил конфиг в дефолт, вошёл по паролю. Все показывает нормально. Выходит, что весь день мозгового штурма убил зря, а беспарольный доступ так и не настроил. =(

Как же правильно настроить беспарольный доступ и что я мог скрутить в конфиге?

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

Как же правильно настроить беспарольный доступ

man ssh-copy-id
ArcFi
()
Ответ на: комментарий от darkenshvein

Полагаю именно из-за UsePAM no у меня клиенты не видели на сервере русские буквы.
Проблема решена.

hikikomori ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.