【问题标题】:How to scp via an intermediate computer [closed]如何通过中间计算机进行 scp [关闭]
【发布时间】:2021-03-26 11:45:57
【问题描述】:

我在计算机 A 上,为了 ssh 到计算机 C,我必须先 ssh 到计算机 B,然后从那里 ssh。我有一个单行 bash 脚本,可以用

ssh -XJ user@compB user@compC

如何编写 bash 脚本让我将一个或多个文件从 compA 复制到 compC?

【问题讨论】:

  • @l'L'l 看起来不错。我怎样才能把它变成一个可配置的 bash 脚本?
  • scp 在某种意义上只是ssh 的包装;它采用相同的选项。 scp -XJ user@compB foo user@compC:foo。 (您可能不需要 -X 进行复制,除非远程端的某些东西使用 GUI 提示您输入密码。)
  • scp -o 'ProxyJump user@compB' ... 是另一种指定 -J 提供的相同行为的替代方法。
  • 也就是说,这更像是一个Unix & LinuxSuper User 问题而不是一个 SO 问题,除非您有一个特定于脚本的问题。

标签: bash ssh scp


【解决方案1】:

最好的方法是在计算机 B 上建立服务器 VPN,然后使用 VPN(计算机 B)从计算机 A 到计算机 C 建立一个 SCP。

否则,您从 a->b 和 b->c 创建 ssh 密钥,这样 ssh 就不会询问您所创建的密码: computer_A:$ scp -r myfilesfolder/myuser@computerB:. computer_A:$ ssh myuser@computerB scp -r myfilesfolder/myuser@computerC:.

或者另一种方法是,安装 sshfs look this 然后将要复制的文件夹安装在计算机 B 中的计算机 A 中,然后将计算机 B 中的文件夹安装到计算机 C 中。然后照常复制文件在挂载的文件夹中。

【讨论】:

  • 你不需要来自 b->c 的 ssh 密钥;直接从 a->c 进行身份验证(b 仅在传输层使用)工作正常。这就是 OP 的原始 ssh -J 用法所做的。
【解决方案2】:

ProxyJumpscp 一样可用,与ssh 一样可用;在所有版本的命令行工具上都没有-J 快捷方式,因此您可能需要将其拼写出来。

scp -o 'ProxyJump user@compB' ./your-local-file user@compC:/path/to/your-remote-file

社区 Wiki,因为这个问题在这里不是主题,更适合Unix & Linux Stack Exchange

【讨论】:

  • 谢谢。如果我希望能够执行“copytocompC 文件”,我该如何在 bash 中执行此操作?
  • 假设每次都应该将file复制到同一个远程目录,compytocompC() { scp -o 'ProxyJump user@compB' "$@" user@compC:/path/to/destination/; }?
  • ...上面是一个函数,但是如果你把函数体放在一个脚本中,它会以同样的方式工作。
猜你喜欢
  • 1970-01-01
  • 2016-02-11
  • 2013-03-24
  • 2016-04-25
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多