Как заставить ssh -R работать для пересылки на два клиентских компьютера на одном и том же IP-адресе, но в разных портах?

Я сделал в основном два идентичных ssh -R вперед, но работает только один. Вот моя ситуация:

На работе: сервер / компьютер, на котором я хочу войти в удаленную папку

дома: настольный ноутбук

маршрутизатор вперед: порт 22 и 49666 к портам порта 49667 и 49668 на рабочий стол

ИТ-отдел на работе хочет, чтобы я использовал ssh -R на компьютере, вместо того, чтобы открывать порт по какой-то причине (я думаю, они беспокоятся если они оставят порт открытым). Для них было большой уступкой, чтобы позволить мне сделать это, и я не хочу больше спорить с ними, открывая порт нормально. Поэтому я делаю это на работе

ssh -R 49666:localhost:22 (home IP) -N #this is for the laptop

Тогда на моем ноутбуке я могу сделать:

ssh localhost -p 49666

, и я успешно попал на рабочий компьютер.

На работе я также делаю:

ssh -R 49668:localhost:49667 (home IP) -N #this is for the desktop

Однако, на моем рабочем столе, если я попробую

ssh localhost -p 49667

, я получаю:

ssh: connect to host localhost port 49668: Connection refused

Команды в основном аналогичны, поэтому я не уверен, почему один работает, а другой нет. Моя первая мысль заключалась в том, что, поскольку по умолчанию ssh-порт равен 22, мой рабочий стол не прослушивает 49667. Поэтому я зашел в / etc / ssh / sshd_config и изменил его, чтобы прослушать 49667, но я все равно получаю ту же ошибку.

Если я нахожусь на рабочем компьютере, и я набираю:

ssh (home IP) -p 22

Я успешно вхожу в компьютер. Аналогично, если я набираю

ssh (home IP) -p 49667

, я успешно вхожу на рабочий стол. Поэтому я не думаю, что это проблема безопасности на моем рабочем столе, так как я могу войти в нее с рабочего сервера.

Моя вторая мысль заключалась в том, что в команде ssh -R (домашний IP) часть пытается перейти на порт 22 дома IP, потому что рабочий компьютер имеет ssh по умолчанию 22, и он не знает, что я установил целевой компьютер вместо порта 49667. Итак, моя следующая попытка состояла в этом

. Я зашел в ~ / .ssh / config на рабочем компьютере и поставил строку следующим образом:

host Desktop hostname (home ip) port 49667

Теперь, если я продолжу рабочий компьютер и тип

ssh Desktop

он успешно входит в систему на рабочем столе, так как он в основном такой же, как в приведенной выше команде:

ssh (home IP) -p 49667

Итак, я пытаюсь сделать это ssh -R на рабочем компьютере:

ssh -R 49668:localhost:49667 Desktop -N

Теперь, когда я пытаюсь выполнить ssh на сервере с рабочего стола дома, я получаю эту ошибку:

ssh_exchange_identification: Connection closed by remote host

отличается от неудачи, которую я получил раньше (соединение отказалось от одного, что, я думаю, просто означает, что вообще не было переадресации портов). Кроме того, когда я получаю вышеуказанный сбой, эта ошибка появляется на рабочем сервере (я знаю, потому что я смотрю его с моего ноутбука)

connect_to localhost port 49667: failed.

Так что в этом случае у меня возникает другая реакция, но до сих пор нет успеха. И у меня нет идей ...

Все 3 компьютера (работа, ноутбук, рабочий стол) имеют правильные открытые ключи для каждого компьютера.

1
задан 28 November 2017 в 06:18

2 ответа

Я думаю, мне неловко удастся выяснить мой ответ через 15 минут после публикации вопроса, поэтому я опубликую свое решение, если у кого-то еще будет аналогичная проблема ... Следующая команда работала для меня

ssh -R 49668:localhost:22 Desktop -N

По какой-то причине я думал, что второй номер порта (22 в этом случае) должен был быть портом, где целевой компьютер (IP, который находится в файле конфигурации под «Desktop») прослушивает ssh. Но это сработало, поэтому я ошибся. Возможно, он должен быть портом, где ssh прослушивается в компьютере, на котором выполняется команда ssh -R?

1
ответ дан 18 July 2018 в 02:27

Я думаю, мне неловко удастся выяснить мой ответ через 15 минут после публикации вопроса, поэтому я опубликую свое решение, если у кого-то еще будет аналогичная проблема ... Следующая команда работала для меня

ssh -R 49668:localhost:22 Desktop -N

По какой-то причине я думал, что второй номер порта (22 в этом случае) должен был быть портом, где целевой компьютер (IP, который находится в файле конфигурации под «Desktop») прослушивает ssh. Но это сработало, поэтому я ошибся. Возможно, он должен быть портом, где ssh прослушивается в компьютере, на котором выполняется команда ssh -R?

1
ответ дан 24 July 2018 в 17:34
  • 1
    Удаленная переадресация -R h1:p1:h2:p2 - перемотка вперед h1:p1 на удаленном конце до h2:p2 на локальном конце. Локальная переадресация -L h1:p1:h2:p2 - вперед h1:p1 на локальном конце до h2:p2 на удаленном конце. – muru 28 November 2017 в 06:39

Другие вопросы по тегам:

Похожие вопросы: