![复制 2 个连接之外的文件?](https://linux22.com/image/493864/%E5%A4%8D%E5%88%B6%202%20%E4%B8%AA%E8%BF%9E%E6%8E%A5%E4%B9%8B%E5%A4%96%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我不喜欢调用 scp 两次。
我需要通过 ssh 连接到 box1,然后再次连接到 boxNAME。如何将文件从 boxNAME 复制到我的本地驱动器?如何将文件从我的本地驱动器复制回 boxNAME?
或者,如果我可以抓取一个文件(任意一个)并将其输出,并将其用作另一侧的标准输入,那么效果也一样好。(文件小于 4k 且为文本)。如果您能告诉我如何创建文本文档并使用标准输出进行写入和保存,将获得加分(请记住,这是跨 2 个连接而不是本地连接,在这种情况下,我会执行 cat file >>out.txt)
答案1
你尝试过这样的事情吗?
ssh user@host1 "ssh user@host2 'cat file.txt' " > local_file.txt
答案2
我认为最简单的方法可能是简单地使用端口转发。启动与中间框的会话并转发一些端口以允许与远端主机建立 ssh 连接。然后只需通过端口转发使用 scp 即可。
如果您需要定期执行此操作,您可以创建使用 ProxyCommand 指令的 ssh 配置。
Host farhost
ProxyCommand /usr/bin/ssh username@intermediate "/bin/netcat -w 1 farhost 22"
User username
有了上述内容,您就可以像直接连接一样连接到远端主机。为了使此操作发挥最佳效果,您需要设置基于密钥的身份验证。