如果我运行这样的东西:
ssh -4 -f -N -T -R "/home/dude/lol.socket:192.168.4.44:4444" dude@someserver -p 22 -i privatekey -o "ExitOnForwardFailure yes" -o ConnectTimeout=5 -o ConnectionAttempts=3 -o ServerAliveInterval=15 -o
Run Code Online (Sandbox Code Playgroud)
然后让我们说连接因任何原因关闭或死亡..说计算机由于维护或错误或互联网连接问题或其他原因重新启动 - >我们有一个大问题。sshd 不会删除/home/dude/lol.socket
在 上创建的套接字文件someserver
。因此,当反向隧道启动器正在恢复并尝试重新创建隧道时,它不能,因为:
Error: remote port forwarding failed for listen path /home/dude/lol.socket
Run Code Online (Sandbox Code Playgroud)
在服务器端,你会得到类似的东西:
error: bind: Address already in use
error: unix_listener: cannot bind to path: /home/dude/lol.socket
Run Code Online (Sandbox Code Playgroud)
断开连接后清理套接字的支持方式/最佳黑客是什么?这是 sshd 中的一个错误,如果/当注意到断开连接时,它不应该自动执行此操作吗?
使用套接字背后的想法很简单,服务器将处理 n 个“伙计”,在任何端口为 m 个“大声笑”服务创建反向隧道,并且使用套接字可以更轻松地确保“伙计”只能访问和绑定到他自己的插座,而不是其他人的插座。它还使我不必记录哪个家伙使用哪个端口来公开哪个服务。当老兄想连接到其他服务器上的服务时,他只需要知道服务的名称并将其绑定到某个随机的本地端口(如果他愿意,也可以使用套接字)即
ssh -v -i -4 -N -T -L "127.0.0.1:3334:/home/dude/lol.sock" -p 22 dude@someserver -o "ExitOnForwardFailure yes" -o ConnectTimeout=5 …