Я пытаюсь использовать 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 кажется перегрузкой, которую "административно запрещено" включать, сокет не существует и сокет существует, но ничего не слушает.