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
我想从 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