如何在Linux和Windows中使用SSHFS通过SSH传输文件
有多种工具可用于在Linux服务器之间复制文件和目录。
在本文中,我们将使用SSHFS通过SSH从本地到远程以及从远程到本地服务器传输文件。
我们还可以使用以下工具在Linux服务器之间复制文件:
RSYNC-我个人的最爱
SCP
NFS
HTTPS
SFTP
桑巴舞
SSHFS概述
SSHFS(安全shell文件系统)是用于Linux(以及其他具有FUSE实现的操作系统,例如Mac OS X或者FreeBSD)的文件系统,能够仅通过远程计算机上的安全Shell登录来对远程计算机上的文件进行操作。
sshfs命令是一个客户端工具,用于使用SSHFS从计算机本地的另一台服务器挂载远程文件系统。
SSHFS允许我们使用安装点从本地计算机上的远程服务器安装远程目录,并像对待其他目录一样对待它。
使用SSHFS的优势
与其他共享文件系统(例如NFS和Samba)相比,我们不需要任何服务器或者客户端配置
SSHFS是一个简单的客户端工具,不需要任何其他配置
我们还可以使用SSHFS在Linux和Windows Server之间通过SSH传输文件
文件在完全加密的通道中传输,因此非常安全
使用SSHFS的缺点
我们将远程目录安装在与NFS服务器类似的本地服务器上,但是使用SSHFS通过SSH进行传输时,会涉及加密和解密,这可能会影响性能
我们还应该将数据保存在挂载点上,就像出现网络连接问题一样,这可能会丢失数据
在两台Linux服务器之间通过SSH传输文件
在Linux上安装SSHFS
SSHFS是一个开源项目,在大多数默认发行版存储库中均不可用
要在RHEL/CentOS 7上安装SSHFS,首先必须安装EPEL存储库
# yum -y install epel-release
提示:
在撰写本文时,SSHFS不适用于RHEL/CentOS 8
接下来在客户端节点上安装sshfs
[root@server1 ~]# yum -y install sshfs
在Ubuntu和Debian上安装sshfs
$sudo apt install sshfs
挂载远程文件系统
要使用SSHFS通过SSH传输文件,我们必须使用以下语法执行SSHFS:
sshfs [user@]host:[dir] mountpoint [options]
检查sshfs -h
以获取受支持选项的完整列表。
在此示例中,我已在server1
上安装了SSHFS,我们将进行挂载
server2
中的远程目录(/shared
)。
[root@server2 ~]# ls -l /shared/ total 0 -rw-r--r-- 1 root root 0 Jan 17 19:21 file1 -rw-r--r-- 1 root root 0 Jan 17 19:21 file2 -rw-r--r-- 1 root root 0 Jan 17 19:21 file3
到(/mount_point)
server1`上的本地Linux节点
[root@server1 ~]# ls -l /mount_point/ total 0
因此,我们必须在server1
上执行sshfs
,我们使用root用户通过SSH传输文件。
我们可以使用任何普通用户,但是请确保该用户具有足够的权限来访问server2
上的远程目录。
[root@server1 ~]# sshfs [email protected]:/shared /mount_point [email protected]'s password:
没有错误报告,因此安装成功。
验证" server1"上的安装点
[root@server1 ~]# mount | grep shared [email protected]:/shared on /mount_point type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
现在,我们可以从本地Linux节点" server1"上"/mount_point"目录下的" server2"上访问远程目录("/shared")的内容。
[root@server1 ~]# ls -l /mount_point/ total 0 -rw-r--r--. 1 root root 0 Jan 17 19:21 file1 -rw-r--r--. 1 root root 0 Jan 17 19:21 file2 -rw-r--r--. 1 root root 0 Jan 17 19:21 file3
现在我们可以在" server1"的"/mount_point"下添加和修改内容,更改将在"/shared"的" server2"上反映出运行时。
我的终端的摘录
在Linux中通过SSH传输文件
要"永久挂载"此远程目录,请使用"/etc/fstab",并使用以下语法:
user@host:/remote/path /local/mount_point fuse.sshfs defaults 0 0
在这个例子中,我们将在/etc/fstab中添加以下内容
[email protected]:/shared /mount_point fuse.sshfs defaults 0 0
卸载远程文件系统
传输文件后,我们还可以使用umount
卸载远程文件系统。
在server1
上执行umount
:
[root@server1 ~]# umount /mount_point/
使用/shared目录从远程服务器(即" server2")验证并确保没有安装路径
[root@server1 ~]# mount | grep shared
在Windows和Linux服务器之间通过SSH传输文件
我们还可以使用SSHFS在Windows和Linux服务器之间通过SSH传输文件。
这也可以使用Samba来实现,但是为了本文的目的,让我们专注于SSHFS
在Windows上安装SSHFS
要在Windows和Linux之间通过SSH传输文件,必须在Windows服务器上安装SSHFS。
我们可以从Github官方页面上获取安装所需的文件
下载
WinFsp
并按照屏幕上的说明在Windows服务器上安装WinFsp下载SSHFS-Win
并按照屏幕上的说明在Windows服务器上安装SSHFS-Win在撰写本文时,我已经安装了
winfsp-1.6.20027.msi
和sshfs-win-3.5.20024-x64.msi
挂载远程文件系统
在Windows服务器上安装了WinFsp和SSHFS-Win之后,接下来我们必须将远程服务器的网络位置映射到本地安装点
我正在使用" WIndows 10",因此我将根据环境共享说明。
在Windows资源管理器中,选择"此PC""映射网络驱动器"
地图网络驱动器
使用以下语法提供远程服务器和远程目录的路径
\sshfs\REMUSER@HOST[\PATH]
说明:
其中我们不能直接从远程Linux服务器将挂载点指定为/shared。
我们必须使用(/)来浏览Linux服务器。
在这个例子中,我们将使用以下命令连接到根用户的主文件夹
\sshfs\[email protected]\
挂载远程文件系统
提供远程服务器(即" server2")中" root"用户的登录凭据
登录凭证
如果一切正常,我们将使用Windows服务器连接到远程Linux服务器。
我们可以在"导航窗格"中验证路径。
默认情况下,我们连接到root用户的主文件夹
在Windows和Linux之间通过SSH传输文件
如何在Windows中使用SSHFS连接到其他文件夹?
在Windows SSHFS中,默认情况下我们连接到用户的主目录,因此我们必须使用导航符号提供绝对路径,即转到/shared
目录,而在Windows上通过SSH传输文件的路径将是//sshfs/[email protected]. .43.10 /../shared
如果我们注意,我首先使用../更改了当前目录,然后使用了/shared目录的路径。
希望我们理解这一点。
提供不同的远程目录路径
现在,我们连接到目录"/shared",在" server2"上创建了三个虚拟文件。
在Linux和Windows之间通过SSH传输文件
有关Windows SSHFS的"高级用法"列表,请查看Github官方页面上的说明
断开远程文件系统
完成后,要断开网络驱动器的连接,请在" Windows资源管理器"中选择"此PC"。
查找映射驱动器,然后在驱动器上单击"右键"以获取选项列表。
选择"断开连接"以从Windows服务器中删除映射的驱动器。
从Windows断开映射的驱动器的连接