scp 通过 ssh 隧道打开

Posted

技术标签:

【中文标题】scp 通过 ssh 隧道打开【英文标题】:Scp through ssh tunnel opened 【发布时间】:2016-02-17 13:34:50 【问题描述】:

我想从已与服务器打开反向隧道的 machineA 发送文件。反向隧道将 machineA 上的 22 端口与服务器上的 2222 端口连接起来:

autossh -M 0 -q -f -N -o "ServerAliveInterval 120" -o "ServerAliveCountMax 1" -R 2222:localhost:22 userserver@server.com 

如果我这样做:

scp file userserver@server.com:.

然后 SCP 通过 SSH 发送带有新登录的文件,在我的例子中使用公钥/私钥。

但如果我这样做:

scp -P 2222 file userserver@localhost:. 

我收到“连接被拒绝”消息。如果我用找到的端口替换上面的2222,也会发生同样的情况:

netstat | grep ssh | grep ESTABLISHED

如何在不打开新的 ssh 连接(不握手)的情况下发送文件?

【问题讨论】:

请编辑您的问题以显示您如何设置 scp 应该使用的 SSH 隧道。 我添加了启动反向 ssh 隧道的命令。 【参考方案1】:

您可以在ssh_config (~/.ssh/config) 中使用ControlMaster 选项,这将为进一步的 ssh/scp/sftp 会话创建持久连接。这很容易:

Host yourhost
  Hostname fqdn.tld
  Port port_number # if required, but probably yes, if you do port-forwarding
  ControlMaster auto
  ControlPath ~/.ssh/master-%r@%h
  ControlPersist 5m

【讨论】:

如果我尝试此配置并使用 2222 值设置端口,我会收到拒绝连接消息。我测试了 22 端口执行 scp --v 和这项工作。谢谢

以上是关于scp 通过 ssh 隧道打开的主要内容,如果未能解决你的问题,请参考以下文章

rsync命令详解rsync用ssh隧道方式同步

通过vscode的SSH隧道打开一个Matplotlib图

ssh和SSH服务(包含隧道内容)

VS Code - 通过 SSH 隧道打开文件夹和编辑文件

Jupyter notebook SSH 隧道错误“无法打开签名数据库”

通过 ssh 隧道进行 rsync [关闭]