「开发运维效率工具」:用SSH,Tee和Base64传输文件

更多互联网新鲜资讯、工作奇淫技巧关注原创【飞鱼在浪屿】(日更新)
「开发运维效率工具」:用SSH,Tee和Base64传输文件
文章图片
SCP等工具受限在安全环境中部署的计算机服务器 , 可能允许SSH会话 , 但禁止SCP , SFTP , 并且不能再没有登录Shell执行远程命令(意味着不能这样sshsystem1'catpayload'|sshsystem2'cat>payload') 。
通常使用SSH网关和防火墙实施这种受限访问 。 SSH网关提供对远程系统的受控访问 。 防火墙可以确保只有通过SSH网关连接到远程系统 。 强制用户仅通过SSH网关连接到远程系统 。
即使在没有登录shell的情况下禁止执行远程命令 , 以及不能使用SCP , SFTP , 只要在终端上获得登录shell并且可以在终端上打印数据 , 我们就已经能够将数据从远程系统传输到本地系统终端 。
假设远程系统和本地系统都类似于Unix , 则以下步骤显示了实现此目的的一种方法:
1.使用连接到远程系统 , ssh并通过管道输出tee将整个会话写入本地系统上的文本文件 。
sshuser@host|teessh.txt即通过Jumphost或SSH网关连接到远程系统 。
在远程系统中 , 创建一个10MB的文件作为要传输的文件 。 head-c10485760/dev/urandom>/tmp/payload如果有实际文件 , 可以跳过此步骤 。
3计算文件上的校验和 。 稍后将使用它来验证整个文件是否正确传输 。
sha1sum/tmp/payload【「开发运维效率工具」:用SSH,Tee和Base64传输文件】4.打印文件的Base64表示形式 。
base64/tmp/payload根据网速 , 这可能需要几秒钟到几分钟才能完成 。
5.结束SSH会话 。
exit6.在本地系统上 , 提取Base64编码的有效负载并对其进行解码 。 假设远程系统上的shell提示符以美元符号(即$)结尾 , 则以下命令将执行此操作 。
sed'1,/$base64/d;/$exit/,$d'ssh.txt|base64--decode>payload7.提取对原始文件计算的校验和 。
grep-A1sha1sumssh.txt8.计算解码后的有效载荷上的校验和 。
sha1sumpayload确保此步骤中的校验和与上一步中的校验和相匹配 。
上面的步骤假定使用sha1sum命令来计算校验和 。 如果此命令不可用 , 请使用sha1 , shasum或其他适合此目的的命令 。 如果担心冲突 , 有sha256sum , sha256 , shasum-a256等来代替的命令 。


    推荐阅读