GIO монтировать SFTP регистронезависимость, имена преобразуются в строчные буквы?

Вопрос или проблема

Я использую GIO для монтирования SFTP-пути, где имя содержит заглавные буквы. Это, похоже, не удается, и в сообщении об ошибке входящее имя, похоже, было преобразовано в строчные буквы.

Полная команда: gio mount sftp://FOO, а сообщение об ошибке:

gio: sftp://foo/: Соединение не удалось

Обратите внимание на изменение регистра.

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

У меня был случай, когда я настроил SSH-сервер в ~/.ssh/config, и имя Host содержало заглавные буквы. Я пытался выполнить монтирование SFTP через GNOME Files. Изменение имени, используемого в Host, на все строчные буквы решило мою проблему.

Если вы хотите попробовать сами, вот минимальная настройка с Docker:

docker run -it --rm ubuntu:24.04 bash

apt-get update
apt-get install dbus ssh gvfs-backends libglib2.0-bin

dbus-run-session bash

gio mount sftp://FOO

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

Это не путь; это раздел “авторитета” URL – другими словами, поле имени хоста – и имена хостов определены как нечувствительные к регистру в стандартном формате URL (RFC 3986 §3.2.2), исходя из его первоначального определения, специфичного для HTTP (RFC 2616 §3.2.3), поскольку они также нечувствительны к регистру в DNS (RFC 1035 §2.3.3). Реализации не обязаны сохранять регистр.

«Путь» URL (который является чувствительным к регистру) начинается только с косой черты после авторитета (в обоих ваших URL есть / как путь).

(Большинство других систем именования хостов также нечувствительны к регистру, включая mDNS/Bonjour (RFC 6762 §5 последний абзац) и ARPANET HOSTS.TXT (RFC 810 пункт 1). Хотя имена NetBIOS/WINS технически чувствительны к регистру на уровне протокола (MS-NBTE §2.2.1), они почти универсально принуждаются к верхнему регистру программным обеспечением, использующим NetBIOS.)

Так что я бы утверждал, что это ошибка OpenSSH, если оно сопоставляет раздел Host с учетом регистра.

Ответ или решение

Согласно вашим наблюдениям, при использовании GIO для монтирования SFTP-пути с заглавными буквами в наименовании, возникает ошибка, связанная с приведением названия к нижнему регистру. Это действительно может вызвать путаницу, поэтому давайте подробно разберемся в данной ситуации.

1. Понимание URL и чувствительность к регистру

В первую очередь, важно а) понимать структуру URL и б) различие между чувствительностью к регистру в разных частях URL. Согласно стандартам URL, в частности RFC 3986:

  • Часть authority — это фрагмент URL, который включает имя хоста. В соответствии со стандартами, имена хостов являются нечувствительными к регистру, что означает, что FOO и foo будут восприниматься как одно и то же.

  • Путь (начиная с первого символа после authority) чувствителен к регистру. Например, /SomeFolder и /somefolder будут восприниматься как разные пути.

Таким образом, ваше подключение к SFTP-серверу через GIO обрабатывает имя хоста как нечувствительное к регистру, что объясняет изменение заглавных букв в адресе.

2. Ошибка с настройкой SSH

Ваша проблема связана с тем, как OpenSSH обрабатывает записи в ~/.ssh/config. Если у вас в разделе Host указано имя с заглавными буквами, OpenSSH может интерпретировать это имя регистрозависимо (что считается неправильным) в отличие от стандартов. Таким образом, когда вы заменили Host на foo, это решило проблему.

3. Проблема или ошибка?

Вы правы, что это может усложнить работу, так как многие пользователи могут не осознавать, что GIO и OpenSSH ведут себя по-разному. Можно утверждать, что поведение OpenSSH является ошибкой, так как оно противоречит установленным стандартам.

4. Рекомендации

Чтобы избежать подобных проблем в будущем, рекомендуется следующее:

  • Используйте исключительно строчные буквы в настройках ~/.ssh/config для имен хостов.
  • Внимательно следите за чувствительностью к регистру при работе с путями и хостами.
  • Если вы сталкиваетесь с необычным поведением при монтировании, такая информация может стать полезной для отчетов об ошибках в OpenSSH.

Заключение

Ваша ситуация демонстрирует важность понимания стандартов URL и их реализации в различных системах. Обратите внимание, что использование строчных букв в ваших конфигурациях может значительно упростить процесс подключения к SFTP-серверам и снизить вероятность ошибок. Если у вас возникнут дополнительные вопросы или вы столкнетесь с другими техническими проблемами, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...