-2

у меня 5 компьютеров и сегодня я настроил ssh. Я использовал переадресацию портов, чтобы привести к моей 192.168.1.10 xbuntu. У меня есть 4 других компьютера в сети

Однако, если бы я просто использовал ssh для моего публичного IP-адреса, который был предоставлен моим провайдером, скажем, ip 98.222.222.38, он переходит непосредственно к моему 192.168.1.10. Откуда он знает, чтобы идти прямо туда? Я не понимаю, так как у меня 5 компьютеров на 98.222.222.38, как он узнает, чтобы перейти к 192.168.1.10 вместо, скажем, 192.168.1.3?

2 ответа2

2

При прямом подключении к IP-адресу через SSH будет предпринята попытка подключения через порт 22. Ваш маршрутизатор поддерживает сетевую трансляцию адресов (NAT), что позволяет использовать несколько компьютеров за одним общедоступным IP-адресом. У вашего маршрутизатора должно быть правило переадресации портов для переадресации соединений на порт 22 вашего IP-адреса WAN на порт 22 на 192.168.1.10.

У вас должно быть отдельное правило для переадресации другого порта WAN на порт 192.168.1.3, чтобы получить доступ к ssh на вашем другом внутреннем компьютере.

Это объясняет, как вы подключаетесь к хосту .10, когда вы пытаетесь подключиться к общедоступному IP-адресу.

Тем не менее, из вашего пояснения в комментариях под этим вопросом: ssh предполагает то же имя пользователя на удаленной системе, что и на локальном хосте, если имя пользователя не указано. Таким образом, если вы используете ssh 98.222.222.38 вместо ssh will86@98.222.222.38 и можете успешно подключиться, ваше имя пользователя на клиентском компьютере должно быть "will86".

Вот весь процесс в действительности (особенности того, как сетевой стек работает на вашем маршрутизаторе, могут быть не совсем точно отражены): когда вы просто запускаете ssh 98.222.222.38:

  • Ваш клиентский компьютер отправляет пакет TCP SYN на IP 98.222.222.38, порт 22
  • Ваш маршрутизатор получает пакет, маршрутизирует пакет на 98.222.222.38
  • Ваш маршрутизатор получает пакет от адаптера WAN через порт 22.2.222.222.38.
  • Ваш маршрутизатор проверяет свои правила переадресации портов NAT, чтобы определить, как маршрутизировать входящий пакет. В большинстве случаев он отбрасывает пакет здесь, но ваш маршрутизатор должен иметь правило переадресации для порта 22 на IP 192.168.1.10.
  • Ваш маршрутизатор отправляет пакет на 192.168.1.10, порт 22
  • 192.168.1.10 получает пакет и отвечает, продолжая через установление соединения TCP для установления соединения
  • Где-то в протоколе приложения ssh (который будет происходить через установленное TCP-соединение) требуется имя пользователя. Так как он не указан в командной строке, клиент использует имя пользователя, вошедшего в систему, который запустил клиентское приложение ssh. Если вы указали ssh vt_antik@98.222.222.38 , он вместо этого попытается использовать vt_antik для имени пользователя.
0

Компьютер может разрешить только одному приложению прослушивать определенный порт в любое время. В этом случае ssh находится на порте 22, поэтому sshd - это тот, который принимает соединения.

Вы можете думать о маршрутизаторе как о суррогатном компьютере для других в сети. В этом случае это будет компьютер, а не приложение, прослушивающее определенный порт. На маршрутизаторе есть только один «порт 22», поэтому он может быть перенаправлен только на один компьютер. Если бы не было правил перенаправления портов, сам маршрутизатор принял бы соединение (а некоторые маршрутизаторы имели доступ по ssh).

Однако вы можете выбрать другой порт на маршрутизаторе и перенаправить на порт 22 другого компьютера, чтобы получить к ним доступ. Ради стандартов, используйте номер порта> 1024, потому что все <1024 зарезервировано для других сервисов (например, 20-21 для FTP, 23 для telnet). Так, например, 98.222.222.38:22100 может получить порт, перенаправленный на 192.168.1.3:22

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .