Я сделал в основном два идентичных 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 компьютера (работа, ноутбук, рабочий стол) имеют правильные открытые ключи для каждого компьютера.
Я думаю, мне неловко удастся выяснить мой ответ через 15 минут после публикации вопроса, поэтому я опубликую свое решение, если у кого-то еще будет аналогичная проблема ... Следующая команда работала для меня
ssh -R 49668:localhost:22 Desktop -N
По какой-то причине я думал, что второй номер порта (22 в этом случае) должен был быть портом, где целевой компьютер (IP, который находится в файле конфигурации под «Desktop») прослушивает ssh. Но это сработало, поэтому я ошибся. Возможно, он должен быть портом, где ssh прослушивается в компьютере, на котором выполняется команда ssh -R?
Я думаю, мне неловко удастся выяснить мой ответ через 15 минут после публикации вопроса, поэтому я опубликую свое решение, если у кого-то еще будет аналогичная проблема ... Следующая команда работала для меня
ssh -R 49668:localhost:22 Desktop -N
По какой-то причине я думал, что второй номер порта (22 в этом случае) должен был быть портом, где целевой компьютер (IP, который находится в файле конфигурации под «Desktop») прослушивает ssh. Но это сработало, поэтому я ошибся. Возможно, он должен быть портом, где ssh прослушивается в компьютере, на котором выполняется команда ssh -R?