При прямом подключении к 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 для имени пользователя.