Lac*_*unt 3 ssh port-forwarding
我的 ~/.ssh/config 包含:
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p
Host hostname.example
# TextMate rmate port
RemoteForward :52698 localhost:52698
Run Code Online (Sandbox Code Playgroud)
当我与主机建立初始连接时,它成功创建了位于 的主套接字文件~/.ssh-lachlanhunt@hostname.example:22
。
但是当我打开一个新终端并尝试建立第二个连接时,我收到此错误:
$ ssh hostname.example
mux_client_forward: forwarding request failed: remote port forwarding failed for listen port 52698
muxclient: master forward request failed
ControlSocket /Users/lachlanhunt/.ssh/socket-lachlanhunt@hostname.example:22 already exists, disabling multiplexing
Warning: remote port forwarding failed for listen port 52698
Run Code Online (Sandbox Code Playgroud)
但是,如果我注释掉RemoteForward
配置中的行,它就能够成功地重用连接,从而使其连接速度更快。有什么方法可以配置 ssh 以支持多路复用连接并启用远程端口转发,这样它仅在主连接时尝试转发端口?
我的系统:
我想出了一个解决办法。我使用带有host
和 否定exec
关键字的 Match 部分来测试主机名和控制套接字文件是否存在。如果该文件不存在,则这是主连接,因此请设置端口转发。否则,这是一个从属连接,并且会跳过转发。
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p
Match host hostname1.example.com,hostname2.example.com !exec "[ -e ~/.ssh/socket-%r@%h:%p ]"
# TextMate rmate port
RemoteForward :52698 localhost:52698
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3793 次 |
最近记录: |