SSH 使用 lrzsz 进行上传和下载

本文最后更新于 2023年9月8日 凌晨

SSH上传下载

通过 SSH 命令连接到服务器,当有上传和下载的需求,通常需要借助其他工具来完成,比如FTPSFTP工具等。

这时可以借助 Zmodem 文件传输协议,常见的图形工具XshellSecureCRT都是支持Zmodem协议的,但Putty并不支持。

zmodem协议有以下的优点:

  1. 通过rzsz命令,简化了上传和下载的步骤。
  2. 上传和下载不需要再次输入用户密码.

为了使用 Zmodem 协议上传和下载文件,首先安装支持该协议的工具。 其中lrzsz就是该协议的实现工具之一。lrzsz这个工具只适合传输小文件,不适合传输大型文件。大文件传输更推荐使用Rsync传输,支持增量差异传输。

zssh 和 lrzsz

如果使用GNU/Linux终端则需要安装。这里以的pacman包管理 Linux 操作系统为例,在命令行执行以下命令:

1
2
3
4
# 让ssh支持zmodem协议
$ sudo pacman -S zssh
# 提供rz,sz命令
$ sudo pacman -S lrzsz

lrzsz 常用的两个命令来上传和下载文件:

  • rz: 接受文件
  • sz: 发送文件

方便记忆可以将r记忆为receive,s记忆为send

在使用上要将 ssh 替换成 zssh 命令,即支持zmodem协议的sshzsshssh使用上并无差异,例如原先使用ssh连接服务器的命令如下:

1
ssh user@password

使用zssh命令替换:

1
zssh user@password

本地安装lrzsz后,再去对应的服务器上安装。这里以 yum 包管理为例安装 lrzsz ,输入以下命令进行安装:

1
$ sudo yum -y install lrzsz

安装后就可以模拟测试文件传输,如果使用命令行终端则使用zssh连接安装了lrzsz的服务器。如果使用Xshell等图形工具正常连接即可。

1
2
$ zssh user@password
Press ^@ (C-Space) to enter file transfer mode, then ? for help

连接成功后可以看到一行命令提示,如果要使用zssh则输入ctrl+2(@)快捷键即可切换。(若不是zssh登入服务器没有该提示)。

如果需要上传文件到服务器,使用xshell等支持Zmodem协议的图形工具,直接输入命令rz接收文件,xshell会打开一个窗口可以方便的选择文件上传。

使用终端模拟工具则在当前服务器使用ctrl+2切换到zssh窗口:

1
2
3
4
5
6
7
# 快捷键输入`ctrl+2`切换到`zssh`
# 查看一下本地目录
zssh>pwd
# 查看本地文件
zssh>ls
# 上传`foo.txt`文件到服务器
zssh>sz foo.txt

注意:切换到zssh后可以使用本地机器的终端命令。

如果需要下载服务器的文件到本地,使用xshell等支持Zmodem协议的图形工具则可以输入sz加上发送的文件名,xshell会打开一个窗口可以方便的保存文件位置。

使用终端模拟工具则先用sz命令发送对应的文件:

1
2
3
4
5
6
7
# 使用`sz`命令发送`bar.txt`
sz bar.txt
# `sz`命令后会出现一行乱码,然后快捷键`ctrl+2`切换到`zssh`
# 查看本机当前位置
zssh > pwd
# 接收服务器`sz`发送的文件`bar.txt`
zssh > rz

使用lrzsz命令可以帮助我们在不使用sftp的情况下传输文件,并且可以方便快捷的上传和下载文件。

(本文完)


SSH 使用 lrzsz 进行上传和下载
https://maojun.xyz/blog/2020/03/SSH使用lrzsz进行上传和下载.html
作者
毛 俊
发布于
2020年3月5日
更新于
2023年9月8日
许可协议