![如何为 SSHFS 指定 SSH 选项?](https://linux22.com/image/1004176/%E5%A6%82%E4%BD%95%E4%B8%BA%20SSHFS%20%E6%8C%87%E5%AE%9A%20SSH%20%E9%80%89%E9%A1%B9%EF%BC%9F.png)
我原本是作为后续问题问的这里。不幸的是,没有任何回复,因此我将其作为单独的问题发布。
根据文档,您应该能够使用ssh
带有的选项sshfs
。您如何做到这一点?我尝试过类似的东西-o User=joe
,但 fuse 给我一个错误,说“用户”不是可识别的选项。
另外,帮助这个问题也将不胜感激。
编辑:
我特别参考了 sshfs 手册页中的以下内容。
SSHFS 选项:
-p PORT equivalent to '-o port=PORT' -C equivalent to '-o compression=yes' ⋮ -o password_stdin read password from stdin (only for pam_mount!) -o SSHOPT=VAL ssh options (see man ssh_config)
我试图指定与主机不同的远程用户名(换句话说,不是user@host:dir
)。原因是特定格式对某些机构分配的用户名不友好。例如,如果机构分配用户名[email protected]
,则 sshfs 和 curlftpfs 等程序将无法正确解释[email protected]@host:dir
。相反,它们将尝试以First.Last
主机身份登录institution.edu@host
。
您能再解释一下吗idmap
?我不太懂手册页上的内容。
编辑:
如果我使用idmap
,我将不得不创建硬编码文件。我希望避免这种情况,以便用户只需使用单个命令,而无需知道它在后台如何工作。最终,即使我离开后,其他人也可能会使用它。即便如此,文档说文件格式是username:uid
。哪个是本地的,哪个是远程的?
答案1
要将 SSH 选项传递给 SSHFS,您可以使用ssh_command
。
例如,要传递-c aes128-cbc
给 SSH,请使用:
sshfs -o ssh_command='ssh -c aes128-cbc' ...
答案2
您可以立即传递几个选项:-p PORT(将 ssh 端口从默认的 22 更改)-C(指定您想要压缩)
答案3
TL/DR:对于需要路径的选项,请使用绝对路径。
sshfs 手册页的这一部分表明它应该可以很好地与以下内容配合使用-o
:
-o SSHOPT=VAL
ssh options (see man ssh_config)
但是,我在传递证书文件时遇到了麻烦-o CertificateFile=path/to/cert
。事实证明,它只适用于证书文件的绝对路径,而普通路径则ssh
可以轻松接受相对路径。