使用 SSHFS 挂载远程的 Linux 文件系统及目录

使用 SSHFS 挂载远程的 Linux 文件系统及目录步骤1:在Linux系统上安装SSHFS默认情况下,sshfs包不存在所有的主流Linux发行版中,你需要在你的Linux系统中启用epel,在Yum命令行的帮助下安装SSHFS及其依赖。#yuminstallsshfs#dnfinstallsshfs【在Fedora22+发行版上】$sudoapt-getins…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

步骤1:在 Linux 系统上安装 SSHFS

默认情况下,sshfs 包不存在所有的主流 Linux 发行版中,你需要在你的 Linux 系统中启用 epel,在 Yum 命令行的帮助下安装 SSHFS 及其依赖。

# yum install sshfs
# dnf install sshfs 【在 Fedora 22+ 发行版上】
$ sudo apt-get install sshfs     【基于 Debian/Ubuntu 的系统】

Jetbrains全家桶1年46,售后保障稳定

步骤2:创建 SSHFS 挂载目录

当你安装 SSHFS 包之后,你需要创建一个挂载点目录,在这儿你将要挂载你的远程文件系统。例如,我们在 /mnt/tecmint 下创建挂载目录。

# mkdir /mnt/tecmint
$ sudo mkdir /mnt/tecmint     【基于 Debian/Ubuntu 的系统】

步骤 3:使用 SSHFS 挂载远程的文件系统

当你已经创建你的挂载点目录之后,现在使用 root 用户运行下面的命令行,在 /mnt/tecmint 目录下挂载远程的文件系统。视你的情况挂载目录可以是任何目录。

下面的命令行将会在本地的 /mnt/tecmint 目录下挂载远程目录 /home/tecmint 。(不要忘了使用你的 IP 地址和挂载点替换 x.x.x.x)。

命令格式
$ sshfs [user@]host:[dir] mountpoint [options]
$ sshfs myuser@mycomputer:/remote/path /local/path -C -p 9876
参数
-C 启用压缩compress
-p 指定端口为9876

$ sshfs tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint   #免密登陆到此即可
$ sudo sshfs -o allow_other tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint     
 【基于 Debian/Ubuntu 的系统】

如果你的 Linux 服务器配置为基于 SSH 密钥认证,那么你将需要使用如下所示的命令指定私钥。

# sshfs -o IdentityFile=~/.ssh/id_rsa tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint
$ sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint     【基于 Debian/Ubuntu 的系统】

其他常见选项

将本地当前登陆用户映射为远端用户user
$ sshfs myuser@mycomputer:/remote/path /local/path -o idmap=user
具体可参考man sshfs

Chrooting

vim /etc/ssh/sshd_config
-------------------------------------------
.....
Match User someuser 
       ChrootDirectory /chroot/%u
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no
.....
------------------------------------------
注意:chroot目录的属主必须是root,否则你将无法连接。
进一步信息可参考 man sshd_config(5)的Match, ChrootDirectory和ForceCommand部分。

步骤 4:验证远程的文件系统挂载成功

如果你已经成功的运行了上面的命令并且没有任何错误,你将会看到挂载在 /mnt/tecmint 目录下的远程的文件和目录的列表

# cd /mnt/tecmint
# ls
[root@ tecmint]# ls
12345.jpg                       ffmpeg-php-0.6.0.tbz2                Linux                                           news-closeup.xsl     s3.jpg
cmslogs                         gmd-latest.sql.tar.bz2               Malware                                         newsletter1.html     sshdallow
epel-release-6-5.noarch.rpm     json-1.2.1                           movies_list.php                                 pollbeta.sql
ffmpeg-php-0.6.0                json-1.2.1.tgz                       my_next_artical_v2.php                          pollbeta.tar.bz2

步骤 5:使用 df -hT 命令检查挂载点

如果你运行 df -hT命令,你将会看到远程文件系统的挂载点。

# df -hT
样本输出:

Filesystem                          Type        Size  Used Avail Use% Mounted on
udev                                devtmpfs    730M     0  730M   0% /dev
tmpfs                               tmpfs       150M  4.9M  145M   4% /run
/dev/sda1                           ext4         31G  5.5G   24G  19% /
tmpfs                               tmpfs       749M  216K  748M   1% /dev/shm
tmpfs                               tmpfs       5.0M  4.0K  5.0M   1% /run/lock
tmpfs                               tmpfs       749M     0  749M   0% /sys/fs/cgroup
tmpfs                               tmpfs       150M   44K  150M   1% /run/user/1000
tecmint@192.168.0.102:/home/tecmint fuse.sshfs  324G   55G  253G  18% /mnt/tecmint

步骤 6:永久挂载远程文件系统

为了永久的挂载远程的文件系统,你需要修改一个叫 /etc/fstab 的文件。照着做,使用你最喜欢的编辑器打开文件。

# vi /etc/fstab
$ sudo vi /etc/fstab     【基于 Debian/Ubuntu 的系统】         

移动到文件的底部并且添加下面的一行,保存文件并退出。下面条目表示使用默认的设置挂载远程的文件系统。

格式
USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs  defaults,_netdev  0  0
注意:使用_netdev选项是为了在挂载之前先保证网络可用。

例子
llib@192.168.1.200:/home/llib/FAH  /media/FAH2  fuse.sshfs  defaults,_netdev  0  0
tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs,_netdev defaults 0 0

用于多用户
user@domain.org:/home/user  /media/user   fuse.sshfs    defaults,allow_other,_netdev    0  0

确保服务器之间允许SSH无密码登录,这样系统重启之后才能自动挂载文件系统。

如果你的服务器配置为基于SSH 密钥的认证方式,请加入如下行:

格式
USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs noauto,x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0
参数
allow_other 允许非root用户访问共享资源。
default_permissions 检查权限,使用远端服务器的实际权限。控制不是本地所有用户都可以访问。
uid, gid 服务器侧的UID可以与本地用户的UID不同,但用户名要一样。在这里只需指出本地客户端的信息,uid=USER_C_ID,gid=GROUP_C_ID即可,sshfs会自动完成本地客户端到服务器端的转换。

例子
tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults,_netdev 0 0

接下来,你需要更新 fstab 文件使修改生效。

# mount -a
$ sudo mount -a   【基于 Debian/Ubuntu 的系统】

步骤 7:卸载远程的文件系统

为了卸载远程的文件系统,只需要发出以下的命令即可。

$ sudo umount /mnt/tecmint
或者
$ fusermount3 -u mountpoint
$ fusermount3 -u /local/path

关于SSHFS的自动挂载

1. 在系统启动时挂载
crontab -e
------------------------------------------
@reboot sh mountsshfs.sh

vim mountsshfs.sh
------------------------------------------
#! /bin/sh
while true
do 
    ping -c1 -w1 ssh_server_ip > /dev/null && break
done
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 user@192.168.200.10:/pathto/dir /home/username/mount/dir
2. 利用/etc/fstab
user@host:/remote/folder /mount/point  fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/user/.ssh/id_rsa,allow_other,reconnect 0 0
参数
noauto 不在boot时mount
x-systemd.automount 配置按需挂载
_netdev 避免“No such device”错误,指明sshfs是一个网络设备而非块设备

注意:在完成对/etc/fstab的修改后,需要执行如下命令
systemctl daemon-reload
systemctl restart <target>
这里 <target>可以使用如下命令查询
systemctl list-unit-files --type automount
3. 借助第三方工具 autosshfs

https://github.com/dyne/autosshfs.git

参考文献:
https://wiki.archlinux.org/index.php/SSHFS

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219613.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tomcat宕机无法响应问题研究解决

    tomcat宕机无法响应问题研究解决本人所在公司有一个系统部署单个tomcat上,该系统由前开发人员开发。本人于两年前接手,在对该系统进行开发运维过程中,先后解决了两种tomcat宕机无法提供服务情况,具体如下:(1)JVM内存不足

    2022年7月1日
    19
  • Pycharm、Anaconda有什么区别[通俗易懂]

    Pycharm、Anaconda有什么区别[通俗易懂]python自身缺少numpy、matplotlib、scipy、scikit-learn…等一系列包,需要我们安装pip来导入这些包才能进行相应运算(python3.5自带了get-pip.py,不需额外下载安装),在cmd终端输入:pipinstallnumpy就能安装numpy包了。每次都额外安装所需要的包略麻烦,这时候我们可以采用anaconda了。anaconda是一个python发行版,包含了大量的包,使用anaconda无需再去额外安装所需包。安装完anaconda,就相当于安装了Py

    2022年8月28日
    1
  • scrollIntoView()的用法[通俗易懂]

    scrollIntoView()的用法[通俗易懂]STARTscrollIntoView是一个与页面(容器)滚动相关的API(官方解释),该API只有boolean类型的参数能得到良好的支持(firefox36+都支持),所以在这里只讨论参数Boolean类型的情况。EXPLAIN调用方法为element.scrollIntoView()参数默认为true。参数为true时调用该函数,页面(或容器)发生滚动,使elem…

    2022年6月18日
    37
  • idea配置远程debug_idea远程调试

    idea配置远程debug_idea远程调试在工作中经常会遇到本地运行没有问题,部署到环境上就会出现问题,很多时候也没有错误日志,所以可以使用远程debug的方式,像本地debug一样,debug服务器上部署的项目。一、idea设置1.在idea工具栏,EditConfigurations2.添加remote3.部署远程服务1:将项目打成jar包上传到服务器上,然后使用命令启动。复制上面生成的一段参数:-agentlib:jdwp=transport=dt_socket,server=y,…

    2022年9月10日
    0
  • Oracle sql调优(网络优化知识点)

    文章目录一、访问数据的方法1、直接访问数据1.1全表扫描1.2ROWID扫描2、访问索引2.1索引唯一扫描2.2索引范围扫描2.3索引全扫描2.4索引快速全扫描2.5索引跳跃式扫描拓展补充本博客介绍一下属于oracle优化器范畴的一些基础知识,访问数据的方法,分为直接访问数据的方法和访问索引的方法两种,然后有了这些基础知识后,可以参考学习我的另外一篇博客:Oracle优化器简介,对…

    2022年4月13日
    38
  • java实现第八届蓝桥杯数位和

    java实现第八届蓝桥杯数位和数位和题目描述数学家高斯很小的时候就天分过人。一次老师指定的算数题目是:1+2+…+100。高斯立即做出答案:5050!这次你的任务是类似的。但并非是把一个个的数字加起来,而是对该数字的每一个数位作累加。这样从1加到100的“和”是:901从10加到15是:21,也就是:1+0+1+1+1+2+1+3+1+4+1+5,这个口算都可以出结果的。按这样的“加法”,从1加到1000是…

    2022年6月15日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号