使用SSH、TEE和Base64传输文件

2020-09-17 23:44:49

部署在安全环境中的计算机服务器可以允许SSH会话,但禁止在没有登录shell的情况下执行SCP、SFTP和执行远程命令。这种受限访问通常通过SSH网关和防火墙强制执行。SSH网关提供对远程系统的受控访问。防火墙可以确保只有SSH网关可以连接到远程系统。因此,用户只能通过SSH网关连接到远程系统,该网关现在可以控制什么是允许的,什么是不允许的。

即使禁止在没有登录shell的情况下执行SCP、SFTP和远程命令,只要我们在终端上获得登录shell,并且可以在终端上打印数据,我们就已经能够将数据从远程系统传输到本地系统。数据在终端中。现在只需弄清楚如何将数据复制到文件中即可。假设远程和本地系统都类似于Unix,下面的步骤显示了实现此目的的一种方法:

使用ssh连接到远程系统,并将输出通过管道传输到tee,以将整个会话写入本地系统上的一个文本文件。

即使在通过跳线主机或SSH网关连接到远程系统时,此类型的管道也能按预期工作。

在远程系统中,创建一个10 MB的文件作为要传输的示例有效负载。

您可能已经有一个要复制的有意义的有效负载,因此在这种情况下,您可以跳过此步骤。

计算文件的校验和。这将在稍后用于验证整个文件是否正确传输。

根据Internet带宽的不同,这可能需要几秒钟到几分钟才能完成。

在本地系统上,提取Base64编码的有效负载并对其进行解码。假设远程系统上的shell提示符以美元符号(即$)结束,则以下命令将执行此操作。

以上步骤假定使用sha1sum命令计算校验和。如果此命令不可用,请使用sha1、shasum或其他可以很好地实现此目的的命令。如果您担心冲突攻击,您可能需要sha25sum、sha256、shasum-a256等。