复制 2 个连接之外的文件?

复制 2 个连接之外的文件?

我不喜欢调用 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

有了上述内容,您就可以像直接连接一样连接到远端主机。为了使此操作发挥最佳效果,您需要设置基于密钥的身份验证。

相关内容