在Linux运维与开发过程中,从Windows客户端向Linux服务器传输文件是常见需求,XShell作为一款功能强大的SSH客户端,虽以远程管理为核心,但通过配套工具或命令行扩展,可实现高效文件传输,本文将详细介绍XShell环境下向Linux传送文件的四种主流方法,涵盖图形化工具、命令行工具及注意事项,帮助用户根据场景选择最优方案。
使用Xftp图形化传输(推荐新手)
XShell与Xftp同属NetSarang系列工具,Xftp基于SFTP(SSH File Transfer Protocol)协议,提供直观的图形界面,支持拖拽、批量传输及断点续传,适合不熟悉命令行的用户。
操作步骤:
-
安装与启动Xftp:
若XShell未集成Xftp,需单独下载安装(官网提供免费版),在XShell界面顶部工具栏点击“Xftp”按钮,或通过“文件→启动Xftp”打开;若已建立Linux会话,右键点击会话标签选择“启动Xftp”,可直接关联当前连接。 -
连接Linux服务器:
Xftp启动后,点击“文件→连接”,弹出配置窗口:- 主机名/IP:输入Linux服务器IP地址;
- 用户名/密码:输入登录Linux的用户名及密码(或选择“使用密钥认证”,提前配置SSH密钥对);
- 端口:默认SSH端口22(若服务器修改过端口,需填写实际端口)。
点击“连接”,若认证成功,左侧显示Windows本地文件系统,右侧显示Linux远程文件系统。
-
文件传输:
- 上传文件:从左侧Windows文件列表拖拽文件/文件夹到右侧Linux目录,或右键点击文件选择“上传”;
- 下载文件:反向操作,从右侧拖拽文件到左侧本地目录;
- 批量传输:按住Ctrl多选文件,或直接拖拽整个文件夹;
- 断点续传:传输中断后重新连接Xftp,右键点击未完成文件,选择“续传”(需Linux服务器支持SFTP断点续传)。
优点:
- 操作直观,无需记忆命令;
- 支持可视化文件管理,可实时查看传输进度;
- 兼容常见文件类型,无需额外配置。
缺点:
- 需安装Xftp组件(依赖图形界面);
- 大文件传输时可能因网络波动中断,需手动续传。
使用scp命令行传输(适合脚本自动化)
scp(Secure Copy)是基于SSH协议的命令行文件传输工具,无需图形界面,适合通过XShell直接执行命令,尤其适用于自动化脚本场景。
操作步骤:
-
基本语法:
scp [选项] 源文件路径 目标文件路径
源文件路径为Windows本地路径(需使用正斜杠或双反斜杠
\
),目标文件路径为Linux服务器路径(格式:用户名@IP:目录/文件名
)。 -
从Windows传Linux(上传):
# 传输单个文件(默认端口22) scp "C:UsersAdmintest.txt" root@192.168.1.100:/home/ # 传输整个目录(加-r参数) scp -r "C:UsersAdmindocs" root@192.168.1.100:/home/ # 指定非SSH端口(如2222) scp -P 2222 "C:test.txt" root@192.168.1.100:/home/
-
从Linux传Windows(下载):
# 下载Linux文件到Windows当前目录 scp root@192.168.1.100:/home/test.txt . # 下载Linux目录到Windows指定路径 scp -r root@192.168.1.100:/home/docs "D:Downloads"
-
常用选项:
-P
:指定SSH端口(注意大写,与小写-p
区分);-r
:递归传输目录;-p
:保留文件权限、时间戳(如scp -p test.txt...
);-C
:启用压缩(适合大文件)。
优点:
- 无需额外工具,XShell内置SSH支持;
- 传输加密,安全性高;
- 可嵌入Shell脚本,实现自动化传输。
缺点:
- 无进度显示(部分终端可能显示进度条);
- 大文件传输中断后需重新开始,不支持续传;
- 需手动处理路径分隔符(Windows用
,命令行需用)。
使用rsync命令行传输(适合大文件/增量同步)
rsync(Remote Sync)是一款高效的文件同步工具,支持增量传输(仅同步变化部分),适合大文件或频繁同步场景,但需在Windows端安装rsync客户端(如cwRsync)。
操作步骤:
-
安装Windows端rsync客户端:
下载cwRsync(免费版),安装后将其bin目录(如C:cwRsyncbin
)添加到系统环境变量,确保命令行可直接调用rsync
命令。 -
基本语法:
rsync [选项] 源路径 目标路径
目标路径需通过SSH协议连接,格式为
用户名@IP:远程目录
,并使用-e "ssh -p 端口"
指定SSH连接参数。 -
从Windows传Linux(上传):
# 同步本地目录到Linux(保留权限,显示进度,压缩传输) rsync -avz -e "ssh -p 22" "C:UsersAdmindocs" root@192.168.1.100:/home/ # 仅同步变化文件(增量传输) rsync -avz --delete -e "ssh -p 22" "C:data" root@192.168.1.100:/backup/
-
常用选项:
-a
:归档模式(保留权限、时间戳等);-v
:显示详细传输过程;-z
:压缩传输数据;--delete
:删除目标目录中多余的文件(保持完全同步);--progress
:实时显示传输进度。
优点:
- 增量传输,节省带宽和时间(仅同步变化部分);
- 支持断点续传(传输中断后重新执行命令会自动续传);
- 可灵活同步文件属性(如权限、时间戳)。
缺点:
- Windows端需额外安装rsync客户端;
- 命令参数较多,新手学习成本较高;
- 首次传输与scp速度相近,后续同步速度更快。
注意事项
-
权限问题:
- 确保Linux目标目录对当前用户有写权限(可通过
ls -ld 目录名
查看权限,chmod 755 目录名
修改); - 传输系统关键文件(如
/etc
目录下文件)时,建议使用root用户或sudo
操作。
- 确保Linux目标目录对当前用户有写权限(可通过
-
网络配置:
- 检查Linux服务器SSH服务是否运行(
systemctl status sshd
); - 确认防火墙允许SSH端口(如
firewall-cmd --add-port=22/tcp --permanent
); - Windows与Linux网络互通(可通过
ping IP
测试)。
- 检查Linux服务器SSH服务是否运行(
-
文件路径格式:
- Windows本地路径在命令行中需用双引号包裹(如
"C:test.txt"
),避免空格或特殊字符导致命令错误; - Linux路径统一使用正斜杠(如
/home/user/
)。
- Windows本地路径在命令行中需用双引号包裹(如
-
密钥认证(推荐):
为提高安全性,建议使用SSH密钥对代替密码认证:- 在XShell中生成密钥对(工具→新建用户密钥对);
- 将公钥上传至Linux(
~/.ssh/authorized_keys
); - XShell/Xftp连接时选择“使用密钥认证”,避免密码泄露。
不同方法对比
方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Xftp图形化 | 操作直观,支持断点续传 | 需安装Xftp,依赖图形界面 | 新手,小批量文件可视化管理 |
scp命令行 | 无需额外工具,适合脚本自动化 | 无进度显示,大文件不易续传 | 简单文件传输,自动化脚本 |
rsync命令行 | 增量传输,高效,适合大文件 | Windows需额外安装,命令复杂 | 大文件、频繁同步场景 |
相关问答FAQs
问题1:使用Xftp传输文件时提示“权限拒绝”怎么办?
解答:首先检查Linux目标目录权限,通过ls -ld 目录名
确认当前用户是否有写权限(如权限为755
,所有者需为当前用户或root),若权限不足,使用chmod 755 目录名
赋予写权限;其次确认用户名是否正确(如普通用户无法上传到/root
目录,需切换至目标用户或使用sudo
),若文件系统为只读(如CD挂载点),需修改挂载选项(mount -o remount,rw /cdrom
)。
问题2:rsync传输时提示“Permission denied (publickey,password)”如何解决?
解答:该错误通常为SSH认证失败,需检查以下几点:① 确认Linux服务器SSH服务开启(systemctl start sshd
);② 检查密钥认证配置:在Windows端确认公钥已上传至Linux的~/.ssh/authorized_keys
,且文件权限为600
(chmod 600 ~/.ssh/authorized_keys
);③ 若使用密码认证,确保XShell/rsync命令中用户名和密码正确;④ 检查防火墙是否拦截SSH端口(如iptables -A INPUT -p tcp --dport 22 -j ACCEPT
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15586.html