安全 shell - ssh 以及 scp 是我每天基本上都会用到的工具。当在多系统上工作时,不设置 SAMBA 或者 NFS 就能在机器之间移动文件是非常便利的。而你所需要的就是打开安全 shell 守护进程 - sshd 。
在我们进入 sshfs 的细节之前,让我们来快速看一下 ssh 。安全 shell 守护进程默认运行的端口 22 上。它使得可以运行一个加密的 shell 交互。带上 -Y 选项,你可以运行 X11 转发机制,允许你在远程机器上运行 X11 等图形程序以及在你当前的终端上显示窗口。
你可以通过 /etc/ssh/sshd_config (这个位置是在 Kubuntu 系统上,不同发行版可能不同)文件来配置 sshd 。这里,你可以禁用 root 访问,旧的协议,X11 转发等。一般的见解是,你限制越多的远程访问,你的系统对于潜在的攻击来说就越安全。如果你打算暴露你的 sshd 到英特网,你可能要调整你的 hosts.allow 和 hosts.deny 文件。有很多强化服务器和 ssh 的指南,这里就不讲细节了。
要使用 ssh,你需要安装 sshd 。在 Ubuntu 系统,也就是 openssh-server 包。为了外部访问,你也需要在路由器/防火墙使用端口22的转发已经找出你的外部 IP 。现在你需要使用你的普通用户权限登录到你的机器。
$ ssh user@192.168.1.100user@192.168.1.100's password:
输入密码,你就可以完全访问远程系统了。
便捷的安全拷贝命令 - scp ,也以同样的方式工作。要拷贝 test.txt 文件到用户的远程主目录,简单地输入:
$ scp test.txt user@192.168.1.100:
你将会被提示输入密码。你也可以同样的拷贝远程系统的文件到本地。写明的命令演示了怎么样拷贝一个完全路径的文件到本地机器:
$ scp user@192.168.1.100:/var/log/messages remote-message
这两个命令意味着你可以自由地在机器之间拷贝文件。而 sshfs 作为一个可以挂载的文件系统提供了这样的功能。在进入怎样设置 sshfs 之前,我们来快速看看什么是 sshfs 。
sshfs 是用 FUSE ,以及依赖 ssh 的 sftp 部分来访问远程机器。作为一个远程文件访问协议,sshfs 不是非常好,例如,多用户同时写入同一文件,将造成损坏。而有点是继承了安全性和容易建立。
那么,怎么用呢?让我们来看一个非常简短的示例。
$ sshfs user@192.168.1.100: remote-home$ ls remote-homeDesktop Documents Downloads Music$ fusermount -u remote-home
初始的 sshfs 命令挂载用户远程的主目录到 remote-home 。你可以在冒号后指定另一个路径来挂载远程文件系统的任何一个部分。访问仅仅受用户的访问权限限制。
在挂载的文件夹上使用 ls 或其他原始命令,就像远程主目录被本地挂载一样。所有的工具都工作,例如你可以登录到你的远程机器,使用你本地安装的构建工具构建软件。
要卸载文件系统,使用 FUSE 工具包中的 fusermount 命令。
总结,sshfs 是一个容易建立的远程文件访问工具。如果涉及多个用户,它应该被小心使用。它使得可以易如反掌地临时访问远程文件系统,也方便从虚拟机挂载文件系统来访问和监视,也方便远程安装,编译和调试。总之,是我一直保留在我的工具箱中的工具之一。
