科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Debian下通过SSHFS/SHFS挂载远程文件 (2)

Debian下通过SSHFS/SHFS挂载远程文件 (2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

大家可能知道并用过在linux上通过smb,nfs来进行远程文件系统的共享,可是大家是否知道我们现在还可以通过ssh来进行远程文件系统的共享。

作者:fengniao 来源:赛迪网技术社区 2007年10月17日

关键字: 操作系统 Linux 挂载 Debian

  • 评论
  • 分享微博
  • 分享邮件

然后可以试试是否可以挂载远程主机文件系统了。首先我们要有一台可以通过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,你还可以通过文件管理器来浏览查看文件,就象使用本地硬盘一样方便了。

卸载文件系统也很简单,只需要输入:

# umount /mnt/remotehost

就可以了。怎么样,不错吧?

怎么,你还觉得麻烦?是啊,现在每次都要通过命令行才能挂载,卸载,而且每次还都要输入密码,我也觉得好麻烦啊。如果能在开机时自动挂载,关机重启时自动卸载就方便了。别着急,下面我来介绍一种方法来实现这个愿望。此法乃原创,不足之处希望大家批评指正。

首先要解决的是怎样免去输入密码这一步,这个简单,在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帐号的密码,这时必须输入正确的密码才能成功。

现在可以试试我们上面的操作是否起作用了。

# ssh root@192.168.1.1

如果不需要密码就已经登录了远程系统的话,那么恭喜你,成功了!现在退回到你自己的系统来继续完成下面最重要的工作吧,创建自动启动脚本。

进入/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
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章