![Подключение к серверу на удаленном порту не удается из-за динамического случайного порта](https://rvso.com/image/1604257/%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83%20%D0%BD%D0%B0%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC%20%D0%BF%D0%BE%D1%80%D1%82%D1%83%20%D0%BD%D0%B5%20%D1%83%D0%B4%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%B8%D0%B7-%D0%B7%D0%B0%20%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D0%BE%D1%80%D1%82%D0%B0.png)
Я пытаюсь подключиться к суперкомпьютеру через SSH и переадресацию портов.
Приложение представляет собой C++-сервер и клиент.
Вот данные порта:
// default values
server_address = "localhost";
port = 12346;
Я подключаюсь к серверу следующим образом:
ssh -Y <adress> -L12346:localhost:12346 -l <username>
(также пробовал)
ssh -Y <adress> -L12346:127.0.0.1:12346 -l <username>
Мое приложение запускается на сервере с таким сообщением журнала:
INFO: startServer: Port 12346 on server <SERVERNAME> opened and waits client.
До сих пор все было хорошо.
Но когда я пытаюсь подключиться к другому компьютеру, сервер отказывается со следующим логом:
debug1: Connection to port 12346 forwarding to 127.0.0.1 port 12346 requested.
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: connect failed: Connection refused
debug1: channel 3: free: direct-tcpip: listening port 12346 for 127.0.0.1 port 12346, connect from 127.0.0.1 port 45446 to 127.0.0.1 port 12346, nchannels 4
Порт здесь (45446) я не устанавливал, и он динамический, поэтому постоянно меняется.
Приложение (соединение сервер-клиент) работает отлично, когда я запускаю их оба на своем рабочем столе.
Любые рекомендации приветствуются.
решение1
Порт 45446
— это порт, на котором работает ваше приложение, и он всегда случайный. Он не должен вас беспокоить.
Что должно вас беспокоить, так это причина, по которой соединение было отклонено в строке выше. Это означает, что ssh пытается подключиться к порту 123456, и соединение не удалось. На это может повлиять либо конфигурация сервера ( PermitOpen
), либо что-то на сервере, о чем трудно догадаться по этой ограниченной информации.