Xshell上传本地文件 传到远程服务器
Xshell6是一个强大的安全终端模拟软件。 Xshell6支持SSH1,SSH2和TELNET 协议。用户可以通过家里的网络连接远程主机,方便用户在家处理突发事情,可以让用户轻松管理远程主机。 Xshell6还可以上传下载文件,非常方便。
详细讲解在 Windows 版 Xshell 中利用 ZMODEM 和 rz 命令上传本地文件到 Linux 服务器的步骤。包含文件准备、会话连接、目录创建、参数设置及 SHA-256 校验比对,确保数据传输准确无误。
把 Windows 电脑里的文件上传到服务器后,既要能在目标目录找到它,也要确认内容没有变化。下面以 Windows 版 Xshell 8 为主线,通过 SSH 会话和 ZMODEM,把本地的 demo-upload.txt 传到 Linux 服务器,再用 SHA-256 比对两端文件。整个过程沿用同一个文件,不需要先打开 Xftp。
准备一个已能正常登录的服务器账号,并确认这个账号可以在自己的主目录创建文件。远端还需安装提供 rz 命令的文件接收程序,例如 lrzsz。下面的目录和文件名都是练习示例;服务器地址、SSH 端口和认证方式使用管理员实际提供的信息。

本地文件准备与哈希值记录
1. 保存本地文件,记下原文件的校验值
在 Windows 文件资源管理器中创建 C:\UploadDemo 文件夹,用记事本准备一个普通文本文件,内容写入 upload-check,然后通过【另存为】保存成 demo-upload.txt。保存时将文件类型选为【所有文件】,编码选为 UTF-8,避免文件名实际变成 demo-upload.txt.txt。
关闭编辑窗口,在文件资源管理器中检查文件名和所在文件夹。接下来的上传操作选这个已经保存的文件;修改尚未保存的内容不会进入上传结果。
打开 Windows PowerShell,执行:
Get-FileHash -LiteralPath 'C:\UploadDemo\demo-upload.txt' -Algorithm SHA256
命令会显示算法、Hash 和文件路径。保留这个窗口,稍后与服务器计算出的 SHA-256 对照。如果提示找不到文件,先修正本地路径,再继续连接服务器;不要用一个并不存在的文件名往下操作。
这里得到的是原文件内容的校验值。后续上传期间不要再编辑并保存这份文件,否则两次计算所对应的内容就不相同了。
2. 打开目标 SSH 会话,确认当前登录账号
在 Xshell 中打开已有的目标服务器会话,完成密码或密钥认证。没有现成会话时,从【文件】进入【新建】,协议选择 SSH,主机、端口和用户身份验证填写服务器的实际信息,再发起连接。
连接成功后,应能看到远端的命令提示符。下面的 Linux 命令都在这个远端窗口执行,不是在 Windows PowerShell 中执行。
先输入:
whoami
pwd
第一条用于查看当前远端账号,第二条显示当前所在目录。把账号与准备上传的目标服务器对应起来;开着多个会话时,先检查当前选中的标签页,避免把文件传到另一台机器。
如果终端仍在要求输入密码、正在运行编辑器,或当前停留在某个交互程序内部,先正常完成或退出该程序,回到远端 shell 提示符,再准备接收文件。

确认远程服务器登录账号与当前目录
3. 建立独立目录,把接收位置固定下来
在远端依次执行以下命令。每执行一条都先确认没有报错,再执行下一条:
mkdir "$HOME/xshell-upload-demo"
cd "$HOME/xshell-upload-demo"
pwd
mkdir 创建练习目录,cd 将当前 shell 切到该目录,最后一条命令用于确认路径确实以 xshell-upload-demo 结尾。后面在这里启动 rz,上传文件就接收到这个工作目录中。
如果 mkdir 提示目录已存在,先查看其中是否有旧文件;需要重新练习时,可将目录名改为一个未使用的新名称,并同步修改后面的 cd 命令。不要把已有目录当作刚创建的空目录,也不要为了重试直接覆盖旧文件。
如果创建目录或进入目录时出现 Permission denied,先处理账号和目标目录权限。使用账号有权写入的目录即可,不需要为了传一个练习文件改用 root 或修改整棵目录的权限。

3. 建立独立目录,把接收位置固定下来
4. 检查 rz,并启用自动识别
仍在这个远端目录中执行:
command -v rz
正常情况下会显示 rz 程序的路径。如果没有输出,或后面运行时提示 command not found,说明当前环境找不到接收程序。应先由有安装权限的人按服务器发行版安装相应软件包;Ubuntu 的 lrzsz 软件包就提供 rz。安装位置在远端服务器,不是 Windows 电脑。
回到 Xshell 当前会话,打开【文件】→【属性】,在左侧选择【文件传输】下的【ZMODEM】,启用“自动激活 ZMODEM”一类的选项,对应英文名称为 Activate ZMODEM Automatically,然后确认设置。
启用后,Xshell 能识别远端程序发起的 ZMODEM 传输请求,从而进入选文件流程。中文版不同构建的选项文字可能略有差异,以 ZMODEM 页面中的自动激活选项为准。
这里不要把“接收文件夹”改成服务器路径。该类本地接收目录设置用于文件下载;本次上传的远端位置,已经由上一节的 cd 固定。

启用Xshell的ZMODEM自动激活功能
5. 运行接收命令,选择本地文件上传
确认当前仍位于刚建立的远端练习目录,执行:
rz -b
-b 指定二进制接收方式,适合保留原文件的字节内容。即使示例是文本,也不需要为这次传输开启 ASCII 转换。
Xshell 识别到请求后,在出现的文件选择窗口中进入 C:\UploadDemo,选中 demo-upload.txt,点击【打开】。如果窗口中有“以 ASCII 方式发送文件”选项,保持不勾选。
如果 rz 已经启动并等待接收,但没有自动出现选文件窗口,在 Xshell 中选择【文件】→【传输】→【用 ZMODEM 发送】,英文命令为 Send with ZMODEM,再选择同一个文件。这是为已经等待接收的 rz 手动启动发送流程,不要在它尚未结束时反复输入 rz。
传输开始后,等待发送过程结束并回到正常的远端 shell 提示符。出现失败、跳过或中断提示时,不能仅凭窗口关闭就判定上传成功。若提示同名文件冲突,先核对目标目录及旧文件,再决定保留哪一份;本例使用新目录,不需要添加强制覆盖参数。
Xshell 也支持把本地文件拖入终端上传,但这取决于会话的上传协议和远端接收条件。本例采用明确运行 rz 再选文件的路径,方便同时确认接收目录和所选文件。
6. 查看远端文件,比对内容并保留路径
回到远端提示符后执行:
pwd
ls -l demo-upload.txt
sha256sum demo-upload.txt
先看 pwd 是否仍指向本次练习目录,再看 ls 是否能找到 demo-upload.txt。文件名正确、大小符合预期,说明文件已出现在目标位置;最后一条命令用于进一步核对内容。
将 sha256sum 输出的校验值与第一节 PowerShell 中的 Hash 逐位比较。两端都使用 SHA-256,十六进制字母的大小写不影响比较。只有校验值一致,才能确认本次上传文件与那份本地文件的内容一致;不要把文件名相同或进度条结束当作内容验证。
若不一致,先检查本地文件是否在记录校验值后被修改、上传时是否选错文件,以及是否启用了 ASCII 转换。保留现有文件和结果,查明差异后再安排传输。
核对完成后,保留 Windows 端的原文件,并记下目标服务器、登录账号和 pwd 显示的完整远端目录。需要让后续程序读取文件时,使用这个实际目录下的 demo-upload.txt;上传完成本身不会自动安装软件、执行脚本或更新服务器上的业务配置。

验证远程文件完整性与哈希比对

































