我在 openSUSE Leap 42 上运行 KDE,我可以从控制台顺利连接到 sftp 服务器:
sftp <user>@<server>
但是,当我在 Dolphin 中尝试相同操作时:
sftp://<user>@<server>
我收到此消息:
kex error : no match for method mac algo client->server: server [hmac-sha2-256,[email protected],hmac-sha2-512,[email protected],[email protected],[email protected]], client [hmac-sha1]
我已经检查过 openssh 是否是最新的,尽管我不太确定在我的计算机上哪里可以找到引用的 sha2 算法,但我认为它们必须已经安装,否则命令行 sftp 连接将无法工作。快速搜索只找到了一个提供商/usr/bin/sftp
,即openssh
,因此看起来这是在两种情况下都在运行的,而 Dolphin 没有使用不同的 sftp 实现。
那么:为什么 Dolphin 不能使用 sftp 命令似乎很乐意支持的算法?我也没有发现任何地方有 Dolphin 独有的 sftp 配置。
该服务器是运行最新 DSM(6.1)的 Synology NAS 设备——我实际上无法更改配置。
更新
SAMBA 似乎也存在类似的问题:我正在访问 SAMBA 共享(来自 w Windows 服务器),这些共享最近已更新为需要协议版本 3.0 及以上。您知道吗,我smb://*
使用 dolphin 的所有快捷方式现在都失败了,但mount -t cifs *
只要我指定 ,仍然可以正常工作-o vers=3.0
。
这意味着 dolphin 要么使用协议的不同实现,要么使用协议的包装器,从而删除了命令行版本所具有的许多选项(比如,我认为可以访问最新的协议版本)。
...或者也许有一种方法可以在海豚的 URL 行中指定一些我不知道的额外参数?
答案1
部分解决方案(仅适用于 SMB):
根据此错误报告,问题在于smbhelper
,它仍然默认使用 SMB1,并且除非明确告知,否则不会提高(这对我来说似乎是个糟糕的想法,但我没有开发它,所以也许当时有一个合理的理由?)
您可以smbhelper
通过创建文件来改变其行为~/.smb/smb.conf
,文件内容如下:
[global]
client max protocol = SMB3
此后,我已在 Dolphin 中收藏的所有 SMB 连接均能正常运行。
更多不起作用的事情:
我还尝试将该client max protocol
行添加到全局输入smb.conf
(\etc\samba\
并将其从本地输入中删除),但奇怪的是,这只对我尝试访问的 SAMBA 共享的子集有效。由于本地解决方案对我来说没问题,所以在这种情况下这不是问题,尽管在多用户机器上这会很烦人...
我之前曾得到过添加的建议,min protocol = SMB3
但这/etc/samba/smb.conf
对我没有任何帮助。
当然,如何说服 Dolphin 使用现代 sftp 密码仍然是个谜...