我正在使用 GIO 挂载名称包含大写字符的 SFTP 路径。这似乎失败了,错误消息中输入的名称似乎已转换为小写。
完整命令是gio mount sftp://FOO
,错误信息是:
gio: sftp://foo/: Connection failed
注意大小写的变化。
这是一个错误,还是我错过了一些路径必须不区分大小写的标准?
我遇到过这种情况,我配置了一个 SSH 服务器~/.ssh/config
,并且Host
名称包含大写字符。我试图通过 GNOME Files 对其进行 SFTP 挂载。将使用的名称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 的软件几乎普遍将它们强制为大写。)
Host
因此,如果它与该部分区分大小写匹配,我会争辩说这是一个 OpenSSH 错误。