为了提高安全性,很多运维团队会使用所谓的“堡垒机”来提供SSH远程登陆功能。通过SSH连接堡垒机后,会看到类似下图的界面:
在这个菜单中,操作人员可以选择需要登陆的机器,堡垒机会用预先设定好的身份登陆目标机器。如果仅仅是远程登陆,堡垒机不会对操作产生任何影响,相反,通过堡垒机管理多个远程机器的登陆信息还是一个非常便利的功能。但是,scp命令是无法直接通过堡垒机传输文件的。在此情况下,我们可以通过rz/sz命令来进行文件传输。
安装必须的软件包
- 在客户端和远端机上安装lrzsz:sudo apt-get install lrzsz
- 在客户端上安装zssh:sudo apt-get install zssh
使用rzsz传输文件
如同使用普通的ssh命令一样,使用zssh连接堡垒机,并接入远程服务器。
上传文件
- 在终端中使用cd命令进入准备接收文件的目录,注意当前用户需要对该目录有写入权限。
- 用Ctrl-Space组合键进入文件传输模式。终端底下会出现zssh >命令提示符。
- 可以在提示符下使用cd、pwd、ls等命令查看本地文件。使用sz <filename>将一个文件发送到远端。
理论上来说,zssh在接收到sz命令后在远端会自动启动rz命令。也就是说,上述流程大多数情况下是没有问题的。但偶尔会发生文件传输失败,甚至zssh异常退出的问题。这类错误的原因是被传输的(二进制)文件中碰巧包含了rzsz的控制指令串。为了避免此类错误,可以在进入文件传输模式之前先手工运行rz指令:rz -e。请注意这里的-e参数就是让rz忽略数据流中的控制字符。然后执行上述第2、第3步即可。
下载文件
- 在远端机器上输入sz <filename>并按回车开始发送文件。
- 用Ctrl-Space组合键进入文件传输模式。终端底下会出现zssh >命令提示符。
- 可以在提示符下使用cd、pwd、ls等命令查看本地文件,进入需要接收文件的目录。使用rz接收远端发送的文件。
参考资料
lrzsz是使用ZMODEM协议传输文件的核心工具,除了使用zssh外,还可以用SecureCRT(Windows)、screen等工具与之配合。参见: