scp 通过 ssh 隧道打开

Scp through ssh tunnel opened

我想从 machineA 发送文件,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 发送带有新登录名的文件,在我的例子中使用 public/private 密钥。

但如果我这样做:

scp -P 2222 file userserver@localhost:. 

我收到 "connection refused" 消息。如果我将上面的 2222 替换为找到的端口,也会发生同样的情况:

netstat | grep ssh | grep ESTABLISHED

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

您可以在 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