由于网闸的协议以及设备的协议限制影响,无法直接使用远程桌面进行文件传输,所以利用SMB协议的共享文件夹及ftp协议来传输文件,具体网络路径如下图所示

image-Pzqp.png

1、在A主机开启共享文件夹

A主机为windows 电脑

右击要共享的文件夹,选择属性,点击共享,选择要共享的用户,权限设置为读取和写入,点击共享,点击完成

注意:如果用户选择为Administrator,挂载端需要输入用户密码,everyone则为开放权限

点击选择网络和共享中心,选择启用网络发现和文件打印机共享

注意:此功能默认关闭,如果不打开在B主机(windows)的网络一栏不会出现这个主机名称,但实际是可用的仅不能显示出来。

2、在B主机将文件夹挂载为磁盘

2.1 挂载文件夹

主机为windows系统

点击此电脑,空白处右击,选择添加一个网络位置,选择自定义网络位置,填写网络地址,格式为\\server_ip\共享文件夹,创建一个名称,点击完成会创建好该文件夹。

注意:此处如果A主机的用户为administrator而不是everyone,此时会有弹窗出现要求输入账号密码

主机为linux系统

挂载文件夹

# 安装cifs工具,RedHat系用yum命令,Debian系用apt命令
sudo yum install cifs-utils 
sudo apt install cifs-utils
# 创建本地挂载点
sudo mkdir -p /mnt/winshare
# 使用以下命令将远程共享挂载到本地(需替换其中的 IP、共享名、用户名和密码):
sudo mount -t cifs //192.168.x.x/sharename /mnt/winshare -o username=windows用户名,password=windows密码,uid=$(id -u),gid=$(id -g),file_mode=0777,dir_mode=0777,iocharset=utf8
# (注:如果 Windows 没有密码或处于公开共享环境,可以使用 -o username=guest,iocharset=utf8)

开机自动挂载

  1. 创建密码配置文件存放windows密码

sudo nano /etc/win-credentials
# 文件内输入下面内容
username=your_windows_username
password=your_windows_password
# 更换文件读写权限
sudo chmod 600 /etc/win-credentials
  1. 创建挂载

#编辑fstab文件
sudo nano /etc/fstab
# 添加下面一行
//10.168.1.205/sharename /mnt/winshare cifs credentials=/etc/win-credentials,iocharset=utf8,uid=$(id -u),gid=$(id -g),file_mode=0777,dir_mode=0777,_netdev,nofail  0  0
# 挂载
sudo mount -a

参数说明:

  • _netdev:等待网络就绪后再挂载

  • nofail:挂载失败不阻塞开机

2.2 安装ftp server

主机为windows系统

使用 filezilla server 软件安装ftp server服务端

image-rliR.png

主机为linux系统

安装vsftpd

# CentOS/RHEL
yum install -y vsftpd

# Ubuntu/Debian
apt install -y vsftpd

配置vsftpd

编辑 /etc/vsftpd/vsftpd.conf(CentOS)或 /etc/vsftpd.conf(Ubuntu):

# ===== 基本设置 =====
listen=YES
listen_ipv6=NO
anonymous_enable=NO

# ===== 允许本地用户登录 =====
local_enable=YES
write_enable=YES
local_umask=022

# ===== 将用户限制在主目录(重要)=====
chroot_local_user=YES
allow_writeable_chroot=YES

# ===== 主动/被动模式 =====
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

# ===== 日志 =====
xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=YES

# ===== 中文文件名支持 =====
utf8_filesystem=YES

创建 FTP 用户并绑定到共享目录

创建一个专用 FTP 用户,主目录直接指向挂载点

# 创建用户,主目录设为 /mnt/winshare,禁止 shell 登录
useradd -d /mnt/winshare -s /sbin/nologin ftpuser
echo "ftp123456" | passwd --stdin ftpuser    # CentOS
# Ubuntu: echo "ftpuser:ftp123456" | chpasswd

# nologin 用户默认无法登录 FTP,需要在 /etc/shells 中加入 nologin
echo "/sbin/nologin" >> /etc/shells

启动服务

systemctl enable --now vsftpd
systemctl status vsftpd

防火墙与selinux配置

# 关闭防火墙
systemctl disable --now firewalld
# selinux 设置为disable
vim /etc/selinux/config
# 将 SELINUX=enforcing 改为:
SELINUX=disabled

3、在C主机接收ftp文件

主机为windows系统

安装 filezilla client 客户端

image-rliR.png
  1. 下载安装:https://filezilla-project.org

  2. 顶部快速连接栏填写:

    • 主机:服务端主机ip

    • 用户名:ftpuser

    • 密码:ftp123456

    • 端口:21

  3. 点击「快速连接」

  4. 左侧为本地文件,右侧为远程 FTP 目录,直接拖拽即可上传/下载

主机为linux系统

# 安装
yum install -y lftp

#基本操作步骤
# 列出远程目录
ls

# 下载文件(支持续传)
get -c filename.txt

# 上传文件
put localfile.txt

# 整个目录同步到本地
mirror /remote/path /local/path

# 多线程下载大文件
pget -n 5 largefile.iso