如何像 KDEConnect 一样挂载分区?

如何像 KDEConnect 一样挂载分区?

当您在 KDEConnect 中按下“浏览此设备”时,如果尚未安装,它会通过 sftp 安装该分区。

如何以编程方式执行此操作,以便我可以始终安装设备并且不会自动按下此按钮?

我尝试在按下“浏览此设备”按钮后以类似于 KDEConnect 的方式进行安装:

$ mount | grep kdeconnect
[email protected]:/ on /run/user/1000/xxxxxxxxxxxxxxxx type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)

因此制定了这个命令:

mkdir -p /run/user/1000/xxxxxxxxxxxxxxxx
sudo mount -v -t fuse.sshfs \
  -o rw,nosuid,nodev,uid=1000,gid=1000 \
  [email protected]:/ /run/user/1000/xxxxxxxxxxxxxxxx

但它会导致以下错误:

read: Connection reset by peer

或者,如果分区尚未挂载,是否可以简单地触发 KDEConnect 来挂载分区?它有一个kdeconnect-cli控制台工具,但它缺少这样的选项。

答案1

发生错误的原因是该命令尝试连接到手机的 22 端口并使用你的SSH 密钥。为了挂载 KDE Con​​nect 公开的文件系统,您应该使用其端口和 SSH 密钥。

在我的手机上,该端口是1740(您可以检查您的电脑上是否也运行相同的端口)。并且我的系统中的netstatKDE Con​​nect 密钥是。~/.config/kdeconnect/privateKey.pem

因此您应该能够使用以下命令执行挂载:

sshfs -o rw,nosuid,nodev,identityfile=$HOME/.config/kdeconnect/privateKey.pem,port=1740 kdeconnect@PHONE_IP:/ MOUNT_POINT

记得相应地替换PHONE_IPMOUNT_POINT。还请注意,我使用sshfs而不是,mount因为它可以让非特权用户更轻松地进行安装。

更多信息这里

答案2

您可以要求 KDE Con​​nect 的守护进程(如果正在运行,但我认为在您的例子中它会运行)使用 D-Bus 为您安装它:

busctl --user call org.kde.kdeconnect /modules/kdeconnect/devices/xxxxxxxxxxxxxxxx/sftp org.kde.kdeconnect.device.sftp mountAndWait

busctl带有 systemd,因此它应该已经安装在常规 Ubuntu 安装中(的手册页busctl),但是也存在其他用于从 CLI 执行 D-Bus 方法的工具。

(你可以使用以下 UI 工具检查 D-Bus 上还有哪些方法可用:D-脚

相关内容