Я сделал два одинаковых форварда 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
Теперь, если я продолжу работу computer и наберите
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
Что отличается от сбоя I получил раньше (соединение отказало одно, которое я думаю просто означает, что не было никакой переадресации порта вообще). Кроме того, когда я получаю вышеуказанную ошибку, эта ошибка появляется на рабочем сервере (я знаю, потому что я наблюдаю за ней с моего ноутбука)
connect_to localhost port 49667: failed.
Так что я получаю другую реакцию в этом случае, но все же нет успеха И у меня нет идей ...
Все 3 компьютера (рабочий, ноутбук, настольный компьютер) имеют правильные открытые ключи для каждого компьютера. [+1135]
Полагаю, у меня есть неловкая удача выяснить мой ответ через 15 минут после публикации вопроса, поэтому я опубликую свое решение на случай, если у кого-то еще возникнет похожая проблема ... Следующая команда сработала для меня
ssh -R 49668:localhost:22 Desktop -N
По какой-то причине я думал, что второй номер порта (в данном случае 22) должен был быть портом, на котором целевой компьютер (IP-адрес, который находится в файле конфигурации в разделе «Рабочий стол») слушает ssh. Но это сработало, поэтому я ошибся. Возможно, предполагается, что это порт, где прослушивается ssh на компьютере, где выполняется команда ssh -R?