然后可以试试是否可以挂载远程主机文件系统了。首先我们要有一台可以通过ssh远程登录的机器,假设这台机器是192.168.1.1吧,它不需要作什么设置,只要保证它ssh服务是打开的,我们就可以挂载它的文件系统了。
# sshfs root@192.168.1.1:/ /mnt/remotehost -o
sshfs_sync -o default_permissions,allow_other,
allow_root,kernel_cache,hard_remove |
现在它可能会提示输入密码,输入ssh登录时需要的远程主机的root帐号密码就可以了。现在看一下是否挂载好了。
# cd /mnt/remotehost
# ls |
如果挂载成功,现在应该可以看到远程机器的文件了。而且你如果使用X Window,你还可以通过文件管理器来浏览查看文件,就象使用本地硬盘一样方便了。
卸载文件系统也很简单,只需要输入:
就可以了。怎么样,不错吧?
怎么,你还觉得麻烦?是啊,现在每次都要通过命令行才能挂载,卸载,而且每次还都要输入密码,我也觉得好麻烦啊。如果能在开机时自动挂载,关机重启时自动卸载就方便了。别着急,下面我来介绍一种方法来实现这个愿望。此法乃原创,不足之处希望大家批评指正。
首先要解决的是怎样免去输入密码这一步,这个简单,在debian参考手册的9.5.3节──用更少的密码建立连接中可以查到。这里就不转载了。这里只就这个例子来说明一下。
首先要保证192.168.1.1上的/etc/ssh/sshd_config中设置了”PubkeyAuthentication yes”然后在本地以root帐号执行以下操作,之所以使用root帐号是因为挂载文件系统时需要用root帐号。
# ssh-keygen -t rsa
# cat ~/.ssh/id_rsa.pub
| ssh root@192.168.1.1 "cat - >>.ssh/authorized_keys" |
这里第一条命令执行时,可能让你输入passphrase,保留为空直接回车就可以了。而执行第二条命令时,需要输入远程系统root帐号的密码,这时必须输入正确的密码才能成功。
现在可以试试我们上面的操作是否起作用了。
如果不需要密码就已经登录了远程系统的话,那么恭喜你,成功了!现在退回到你自己的系统来继续完成下面最重要的工作吧,创建自动启动脚本。
进入/etc/init.d目录,创建下面两个文件。
第一个文件是mountsshfs,下面是文件内容。
#!/bin/sh
#
# mountsshfs Mount SSH filesystems.
#
# Version: @(#)mountsshfs 1.00-1 15-Apr-2005 andot@ujn.edu.cn
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
#
# Mount SSH file systems in /etc/sshfstab.
#
echo -n "Mounting SSH filesystems..."
if [ -f /etc/sshfstab ] ; then
( cat /etc/sshfstab ; echo ) | sed -e '/^#/d' -e '/^$/d' | (
while read host mount_point sshfs_options fuse_options
do
sshfs $host $mount_point -o $sshfs_options -o $fuse_options
done
)
fi
echo "done"
: exit 0 |
第二个文件是umountsshfs,下面是文件内容。
#!/bin/sh
#
# umountsshfs Unmount SSH filesystems.
#
# Version: @(#)umountsshfs 1.00-1 15-Apr-2005 andot@ujn.edu.cn
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
#
# Unmount SSH file systems in /etc/mtab.
#
echo -n "Unmounting SSH filesystems..."
if [ -f /etc/mtab ] ; then
( cat /etc/mtab ; echo ) | sed -e '/^#/d' -e '/^$/d' | (
while read host mount_point options
do
if echo $host | awk '{ if ( substr($0, 1, 6)
== "sshfs#" ) exit 0; else exit 1 }' ; then
umount $mount_point
fi
done
)
fi
echo "done"
: exit 0 |