如何暂时禁用本地转发

jeb*_*jeb 17 ssh port-forwarding

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

HOST myServer
   hostname 10.10.0.1
   user xyz
   LocalForward 8080 localhost:80
   LocalForward 4000 127.0.0.1:4000
   ...
Run Code Online (Sandbox Code Playgroud)

这就像一个魅力,但我也有脚本来同步一些数据。
这些脚本在已经存在连接的情况下尝试连接到服务器时会显示许多警告。

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
....
Run Code Online (Sandbox Code Playgroud)

是否有一种巧妙的使用方法sshrsync选项可以禁用会话的所有本地转发?

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

Jak*_*uje 18

中有ClearAllForwardings选项ssh_config,它完全符合您的需要:

清除所有转发

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

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

ssh -o ClearAllForwardings=yes host
Run Code Online (Sandbox Code Playgroud)

  • 以防万一有人需要`git`:`GIT_SSH_COMMAND="/usr/bin/ssh -o ClearAllForwardings=yes"` (2认同)