SSH 将 TCP 转发到 unix 套接字时出错

SSH 将 TCP 转发到 unix 套接字时出错

我正在尝试将ssh本地端口上的 TCP 连接转发到远程服务器上的 Unix 套接字,但一直收到错误。

nc我首先在远程服务器上进行监听:

remote$ nc -lU /tmp/socket

然后我使用 SSH 设置了端口转发:

local$ ssh -L127.0.0.1:5000:/tmp/socket -vv #remote host here#

SSH 和端口转发似乎有效:

debug1: Local connections to 127.0.0.1:5000 forwarded to remote address /tmp/socket:-2
debug1: Local forwarding listening on 127.0.0.1 port 5000.
debug1: channel 0: new [port listener]
debug1: channel 1: new [client-session]

然后我尝试127.0.0.1:5000在浏览器中访问,并在终端中收到此错误消息:

debug1: channel 2: new [[email protected]]
channel 2: open failed: administratively prohibited: open failed
debug1: channel 2: free: [email protected]: listening port 5000 for /tmp/socket port -2, connect from 127.0.0.1 port 41372 to 127.0.0.1 port 5000, nchannels 3

它出现了很多次,但连接失败。

我该如何设置?(我更喜欢不需要在远程服务器上 root 或在本地安装新软件的解决方案。)

答案1

nc -klU /tmp/socket

否则,nc 将接受并处理一个连接然后退出。nc-k分叉一个新进程来处理传入的连接,并继续其 accept() 循环。

ssh 似乎超载了“管理禁止”,还包括套接字不存在和套接字存在但没有任何东西在监听。

相关内容