利用SSH Filesystem实现网络的安全连接

远程文件系统的访问有很多种不同的实现方式,一些常见的连接方式比其它特定情况下的更有用。"网络文件系统"就属于这样的一类,网络文件系统软件提供了一种方法,可以将远程计算机上的文件系统当作本地文件系统的一部分,但在怎样进行无缝结合方面,它还存在很多问题。毕竟,实际效果的好坏取决于文件系统的浏览界面情况,受网络带宽和延迟影响的访问时间,以及其它涉及系统的因素。

对于网络文件系统软件来说,最着名的一个例子就是微软的通用互联网文件系统(CIFS),它可以容许微软Windows"映射网络驱动器"并利用资源管理器对网络进行"浏览"。另一个是最早由太阳计算机系统开发的网络文件系统(NFS),作为美国电话电报公司开发的UNIX系统配置已经有15年的历史了。尽管还存在几十种其他的选择,但这两种系统占据了网络文件系统的主流。

即使在未加密的网络中,加密网络文件系统也可以为远程文件系统访问提供安全连接。在加密网络中,在数据传输的时间进行加密也是一个好主意。对于安装了Openssh的系统来说,实际上这包含了几乎所有的开源类Unix操作系统,sshfs-ssh文件系统-作为可验证的方便安全的网络文件系统,是用来访问远程计算机上存储数据的完美选择

因为它是基于ssh的,所以需要在客户端计算机上安装和使用sshFS的话,就需要安装Openssh。几乎所有的Linux主要发行版本和BSD Unix操作系统,在默认配置下都已经安装了Openssh的,所以你不会需要单独安装它。此外,服务器端-你希望能够从本地客户端系统访问的计算机中的文件系统-需要运行Openssh服务器进程。

ssh文件系统也是基于FUSE,也就是所谓的"用户空间文件系统"。FUSE在类Unix系统中提供了一个API,可以用于建立高级别的文件系统,并且可以实现不需要root权限连接的安全管理。幸运的是,主要的开放源代码类Unix操作系统的软件管理系统都应该为你提供了自动处理功能。

当使用一个基于源代码的软件管理系统时,你可能需要确保安装操作系统生成内核的时间,FUSE的安装操作是正确的。以FreeBSD的Ports系统为例,你可以指定所有系统头都应在操作系统安装过程中安装。

一旦确认了系统中已经安装了FUSE和sshFS,安装远程文件系统就是一件容易令人难以置信的事情。实际上,只要一个mount命令(用于挂载一个本地文件系统)和ssh命令(用于打开远程计算机上的命令界面)的最简单组合即可。

除了简单易用外,sshFS还可以任意选择子目录来进行安装,并且可以决定安装的内容。只要你拥有远程系统给定目录的ssh连接,就可以利用sshFS通过安全加密连接在本地进行安装。

根据sshFS手册,利用sshFS挂载远程文件系统的命令是:

sshfs [user@]host:[dir] mountpoint [options]

让我们看看一个简单的例子。

艾伦在一台主机名为unruly的FreeBSD服务器上有一个包含Ogg Vorbis格式音乐文件的文件夹,他希望可以从自己名为insectmonger的Debian笔记本计算机上直接访问该文件夹。音乐文件所在的文件夹为/usr/home/alan/vorbis。该文件夹在笔记本计算机上位置,他希望是/home/alan/external。在两台机器上的用户名是一样的,"alan"。他使用的命令应该是:

sshfs unruly:/usr/home/alan/vorbis /home/alan/external

一条简单的命令就可以完成卸载,正如sshfs手册指定页中的说明,艾伦可以使用的命令是:

fusermount -u mountpoint

现在,他可以输入:

fusermount -u /home/alan/external

他可以很容易地使用通常的umount命令来卸载文件系统分区:

umount /home/alan/external

根据手册中[user@]部分的语法示例,[user@]是sshfs命令的一部分,可以用来指定远程计算机上的用户帐户,与访问远程文件系统需要"拥有一个单独用户名的帐户"不同的是,你可以利用本地系统的用户名来挂载文件系统。

命令语法示例中的[options]部分包括了sshfs手册中描述的50多个选项–远远超过了一篇单独文章可以解释的范围。其中最常用的选项有:

sshfs -h

该选项可以提供简单的语法说明,如果你需要在使用sshFS命令前快速了解可用的选项的话。

sshfs [user@]host:[dir] mountpoint -p 2002

该选项可以容许你选择其它的连接端口而不是默认的22号ssh端口,在ssh服务器必须与来访问远程文件系统配置为使用非标准端口的情况下非常有用。

sshfs [user@]host:[dir] mountpoint -C

利用-C选项,可以启用ssh的压缩功能。对互联网之类的低带宽网络中的高流量需求,通过有效降低sshfs的挂载时间这样可以加快远程文件访问的速度。