如何使用SSHFS通过SSH 挂载远程的Linux文件系统或者目录

写这篇文章的主要目的就是提供一步一步的指导,关于如何使用 SSHFS 通过 SSH 挂载远程的 Linux 文件系统或目录。

这篇文章对于那些无论出于什么目的,希望在他们本地的系统中挂载远程的文件系统的用户或者系统管理员有帮助。我们通过 Linux 系统中的一个安装了 SSHFS 客户端进行实际测试,并且成功的挂载了远程的文件系统。

在我们进一步安装之前,让我们了解一下 SSHFS 的相关内容,以及它是如何工作的。

什么是 SSHFS?

SSHFS(Secure SHell FileSystem)是一个客户端,可以让我们通过 SSH 文件传输协议(SFTP)挂载远程的文件系统并且在本地机器上和远程的目录和文件进行交互。

SFTP 是一种通过 SSH 协议提供文件访问、文件传输和文件管理功能的安全文件传输协议。因为 SSH 在网络中从一台电脑到另一台电脑传输文件的时候使用数据加密通道,并且 SSHFS 内置在 FUSE(用户空间的文件系统)内核模块,允许任何非特权用户在不修改内核代码的情况下创建他们自己的文件系统。

在这篇文章中,我们将会向你展示在任意 Linux 发行版上如何安装并且使用 SSHFS 客户端,在本地 Linux 机器上挂载远程的 Linux 文件系统或者目录。

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

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


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

步骤 2:创建 SSHFS 挂载目录

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


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

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

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

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


  1. # sshfs tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint 
  2. $ sudo sshfs -o allow_other tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint      【基于 Debian/Ubuntu 的系统】 

如果你的 Linux 服务器配置为基于 SSH 密钥授权,那么你将需要使用如下所示的命令行指定你的公共密钥的路径。


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

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

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


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

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

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


  1. # df -hT 

样本输出:


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

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

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


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

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


  1. sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs defaults 0 0 

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

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


  1. sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0 

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


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

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

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


  1. # umount /mnt/tecmint 

目前为止就这样了,如果你在挂载远程文件系统的时候遇到任何问题或者需要任何帮助,请通过评论联系我们,如果你感觉这篇文章非常有用,请分享给你的朋友们。

本文作者:佚名

来源:51CTO

时间: 2024-12-22 22:37:06

如何使用SSHFS通过SSH 挂载远程的Linux文件系统或者目录的相关文章

如何使用 SSHFS 通过 SSH 挂载远程的 Linux 文件系统或者目录

写这篇文章的主要目的就是提供一步一步的指导,关于如何使用 SSHFS 通过 SSH 挂载远程的 Linux 文件系统或目录. 这篇文章对于那些无论出于什么目的,希望在他们本地的系统中挂载远程的文件系统的用户或者系统管理员有帮助.我们通过 Linux 系统中的一个安装了 SSHFS 客户端进行实际测试,并且成功的挂载了远程的文件系统. 在我们进一步安装之前,让我们了解一下 SSHFS 的相关内容,以及它是如何工作的. Sshfs 挂载远程的 Linux 文件系统或者目录 什么是 SSHFS? SS

java实现ssh协议远程通过中间服务器连接跳转第三方服务器

问题描述 java实现ssh协议远程通过中间服务器连接跳转第三方服务器 java实现ssh协议远程通过中间服务器连接跳转第三方服务器,目前只能连接到中间服务器 ,但是连接第三方服务器怎么实现 求解

ssh如何远程执行命令并自动退出

ssh命令格式如下: usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl

java ssh linux-java实现ssh登录远程Linux服务器并在该服务器上执行命令的问题

问题描述 java实现ssh登录远程Linux服务器并在该服务器上执行命令的问题 请教高手: 现在要使用java实现ssh登录远程Linux服务器并在该服务器上执行命令,获得执行命令的结果!由于采用的ssh登录方式是使用公钥密钥对的形式,不需要输入密码.所以如果正常的话可以直接执行,能很快得到结果. 但要是不小心出现问题,比如公钥密钥丢失等情况,就会需要输入密码,这时候程序就会一直停留在等待输入密码的那一步,无法继续执行下去. 现在假设发生了后面那种事情(需要输入密码,程序一直停留在等待密码),

SSH 无法远程登录问题的处理思路

购买云服务器 ECS(后续简称 ECS)Linux 服务器后,首先面临的就是如何登录和使用的问题.而由于服务器在云端,所以日常运维中通常都会基于 SSH 客户端登录服务器进行相关操作.今天,我们就从登录 ECS 的不同方法和使用场景讲起,捋清 SSH 无法远程登录问题的常见原因与排查思路. ECS Linux 服务器的登录方式 ECS Linux 不同登录方式示意图 如上图所示,当前 ECS Linux 支持 3 种不同的登录方式,其操作说明与使用场景如下: 1.管理终端(远程连接) 使用场景:

openstack ssh登录远程实例

问题描述 openstack ssh登录远程实例 各位大神们,本人刚接触openstack,有好多问题还是不明白,请求各位大神们帮忙.在此谢谢各位了! 问题就是:现在有两台机器:ip分别为192.168.8.175.192.168.8.147,其中192.168.8.175是controller+compute节点,192.168.8.147是一个compute节点,分给虚拟机的ip网段是203.0.113.0/24.现在在这两个节点上都可以创建虚拟机,在dashboard也可以看到,也可以通过

菜鸟学Linux命令:ssh命令 远程登录

1.查看SSH客户端版本 有的时候需要确认一下SSH客户端及其相应的版本号.使用ssh -V命令可以得到版本号.需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用OpenSSH: $ ssh -V  OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003 下面的例子表明该系统正在使用SSH2: $ ssh -V  ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i68

日志-ssh root远程不能登录

问题描述 ssh root远程不能登录 上次遇到ssh无法远程登录,连密码确认框都不会弹出,捣鼓了一天,又发现新的问题了,centos 系统安装里的denyhosts,开始每次登陆,无论谁的电脑,甚至是别的城市的电脑登陆,无论密码对错,全部被加入到hosts.deny中 后来直接清空日志,把这个服务停止了,然后再看hosts.deny没有被加入,而且也能弹出密码输入确认框. 现在的问题是sshd服务正常,关闭Selinux,关闭防火墙,端口未占用,可就是远程连接不上.真是郁闷里的啊. 解决方案

Ubuntu下通过sftp/SSH远程登录linux系统

SSH远程登录linux系统 步骤如下: 1.在需要远程访问的计算机的"新立得"里面安装openssh-server.这台计算机是远程计算机,你当前使用的计算机是本地计算机.如果使用Ubuntu或者其他Linux版本,已经安装了连接到远程计算机的软件. 2.远程计算机软件安装完毕.在本地计算机的终端里面输入: ssh username@address 其中username是远程计算机的账户名称,address是远程计算机的IP地址或者域名. 平日你希望以keir登录192.168.1.