gvfs-挂载自动密码

gvfs-挂载自动密码

我想为 gvfs 挂载创建快捷方式(我更喜欢从 shell 挂载)。为此,不必输入ftp://sftp://连接的密码是非常必要/方便的。目前我知道的唯一方法是:

echo 12345 | gvfs-mount sftp://[email protected]/

尽管我可以授予该文件的权限700(甚至可以授予该文件的权限100),但我不确定它是否相当安全。比.netrc物品还差吗?我知道ssh-copy-id,但我无法访问大多数sftp服务器上的 shell。

我的方法有更好的(标准)替代方案吗?他们存储密码时会做nautilus什么?caja

答案1

我和你一样,我喜欢从命令行挂载/卸载我的文件系统。

关于标准输入选项

我不确定它是否相当安全。它比 .netrc 项目差吗?

您应该知道,在许多系统上,进程名称和命令行参数对所有用户都是可见的。例如,在 Linux 中,执行grep -a . /proc/*/cmdline此操作即可查看全部内容。

也就是说,在包括 bash 在内的某些 shell 中,echo这是一个内置命令,因此不会启动任何进程。

所以,据我所知,应该不会比.netrc。无论如何,请仔细检查您的文件权限。

SFTP

gvfs-mount sftp://somehost/somepath您无需密码即可工作。 (我刚刚测试成功。)

推荐的解决方案是使用基于密钥的身份验证,而不是在任何地方存储任何密码。

例如,参见身份验证 - 如何设置无密码 SSH 登录? - 询问Ubuntu将 ssh 密钥复制到另一台机器的最简单方法? - 询问Ubuntu(它是为 Ubuntu 编写的,但对于其他 Unices 的工作方式相同)。

我知道 ssh-copy-id,但我无法访问大多数 sftp 服务器上的 shell。

ssh-copy-id 只是一个方便的快捷方式。您不需要 shell 访问权限来设置基于密钥的身份验证,但您确实需要访问您的主目录。

如果您可以通过 SFTP 交互地访问您的文件,那么您很可能可以设置~/.ssh/~/.ssh/authorized_keys,除非管理员小心翼翼地阻止了这一点,但这将是搬起石头砸自己的脚。实际上管理员应该鼓励用户设置基于密钥的身份验证。看看他们有什么政策。

如果您只需要设置一个密钥,则只需复制您的民众上面(可能)生成的(非私有)密钥文件到名为~/.ssh/id_rsa.pub目录中的远程文件并设置权限(对您来说是读写,对其他人没有任何影响)。.sshauthorized_keys600

文件传输协议

关于 ftp url,传统的答案是使用 a~/.netrc如解释的,例如https://askubuntu.com/a/359802/68124

唉,它与无数的 ftp 客户端(新旧)配合得很好,包括curlftpfs,但(至少在 Ubuntu 14.04 上)gvfsmount忽略它。

也许curlftpfs适合您的用例。主要区别在于您选择挂载点而不是gvfs-mount计算挂载点。

curlftpfs ftp://host/ ~/mymountpoint

再次使用 SFTP

如果您喜欢这个curlftpfs选项,您可以考虑您的 sftp 网址,

sshfs host:/some/remote/path ~/myothermountpoint

如果想知道 sshfs 是否需要 shell 访问,维基百科说:客户端通过 SSH 文件传输协议 (SFTP) 与远程文件系统交互,[2]

最后一句话:对于需要显式安装点的工具,请考虑首先在正确的路径创建一个空目录。如果您尝试多次或更改选项,请记住fusermount -u somepath在尝试再次安装之前先卸载。

答案2

您可以使用类似的方法expect在每次连接时提供凭据。它不是超级安全,但可以满足您的需求。

#!/usr/local/bin/expect --
set timeout -1
spawn gvfs-mount {args}
expect "User"
send "joe\n"
expect "Password:"
send "xxxxx\n"
expect eof

来源: gvfs-mount 指定用户名密码

相关内容