如何临时禁用本地转发


13

我的~/.ssh/config文件条目中包含本地转发定义,例如

HOST myServer
   hostname 10.10.0.1
   user xyz
   LocalForward 8080 localhost:80
   LocalForward 4000 127.0.0.1:4000
   ...

这就像一个符咒,但是我也有脚本来同步一些数据。
当这些脚本尝试连接到已经存在连接的服务器时,它们会显示许多警告。

bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8080
bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 4000
....

有没有一种整洁的方法可以使用sshrsync带有选项来禁用会话的所有本地转发?

显然,我可以复制并粘贴每个配置块,并使用和不使用本地转发构建一个配置块,但是我希望有一个更好的解决方案。

Answers:


14

中的ClearAllForwardings选项ssh_config可以满足您的需求:

ClearAllForwardings

指定清除配置文件中或命令行上指定的所有本地,远程和动态端口转发。从ssh(1)命令行使用该选项清除配置文件中设置的端口转发时,此选项主要有用,并且由scp(1)和sftp(1)自动设置。参数必须是yes或no(默认值)。

您可以将其用作命令行选项:

ssh -o ClearAllForwardings=yes host

完美-我认为我已经足够仔细地阅读了文档
jeb

2
万一有人需要它,以防万一gitGIT_SSH_COMMAND="/usr/bin/ssh -o ClearAllForwardings=yes"
user1338062

绝对不是RemoteForward=no-这是我在寻找相同答案时所寻找的东西。
DouglasDD

Warning: remote port forwarding failed for listen port XYZ当已经存在连接时,这也会禁止显示该消息。

1
@wbkang当然。立即修复。抱歉,可能是拼写错误。
加库耶
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.