Назад | Перейти на главную страницу

Ошибка при перенаправлении TCP по протоколу SSH на сокет 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 [direct-streamlocal@openssh.com]
channel 2: open failed: administratively prohibited: open failed
debug1: channel 2: free: direct-streamlocal@openssh.com: 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-доступ на удаленном сервере или локальная установка нового программного обеспечения.)

nc -klU /tmp/socket

В противном случае nc примет и обработает одно соединение, а затем выйдет. -k nc отключает новый процесс для обработки входящего соединения и продолжает цикл accept ().

ssh кажется перегрузкой, которую "административно запрещено" включать, сокет не существует и сокет существует, но ничего не слушает.