我正在尝试将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 似乎超载了“管理禁止”,还包括套接字不存在和套接字存在但没有任何东西在监听。