Клиент попросил меня настроить безопасный FTP-сервер (SFTP с использованием openSSH или FreeSSHd).
Этот новый сервер будет проходить через брандмауэр, настроенный только на порт 22.
Это может показаться странным, но из соображений безопасности они предпочитают не открывать другие порты на брандмауэре.
Они спрашивают, может ли сервер использовать порт 22 как для самого сервера, так и для клиента.
Сервер работает под управлением Windows Server 2008 64 (с freeSSH / OpenSSH)
Клиент работает под управлением Windows XP (с putty / winscp)
Могу ли я использовать порт 22 вместо большого пула портов, который он обычно использует? (как для подключения, так и для передачи данных)
Если нет, как я могу настроить SFTP-сервер на использование другого порта?
Есть ли специальная команда для его настройки или руководство для freeSSH / openSSH?
Могут ли разные операционные системы создать другие проблемы, с которыми я могу столкнуться позже?
Проще говоря, это невозможно сделать без значительных усилий.
Windows требует как минимум 250 портов в диапазоне временных портов. Чтобы включить 22 в диапазон, вы, вероятно, должны включить порты прослушивания для важных системных служб (если Windows разрешила диапазону начинаться ниже 1024, что сомнительно)
Windows не поддерживает изменение исходящего порта с помощью NAT.
Насколько мне известно, реализация SSH в Windows не позволяет явно указать клиентский порт.
Ваши варианты:
Поставьте перед сервером устройство для управления трафиком.
Создайте собственное клиентское приложение SSH с сильными исправлениями.
Убедите клиента, что его требования смехотворны.
Имо, все это какое-то недоразумение. Так что я не хочу даже отвечать на этот вопрос. Но ладно.
Как правило, вы не указываете исходный порт приложения TCP / IP. Исходный порт в 99,9% случаев назначается автоматически локальной операционной системой.
Кроме того, порт источника во многих случаях является единственной уникальной информацией о соединении TCP / IP. Так что это не исправить. В противном случае вы не сможете открыть несколько подключений с локального компьютера к серверу.
Даже если вы смогли исправить локальный порт (а я не знаю ни одного клиента SSH / SFTP, который позволяет это), вы не может настроить это на стороне сервера. Сервер не контролирует локальный порт, используемый клиентом.
Хотя могут быть обходные пути или альтернативные способы, я не могу вам их дать, так как вы не объяснили нам, почему вы действительно хотите это сделать.
Я могу продолжать так часами, но это бессмысленно, потому что я не думаю, что я действительно понимаю вас или что вы или ваш клиент понимаете, чего вы / они хотите.
Очевидно, что клиент работает в предположении, что SFTP похож на обычный FTP в том смысле, что он имеет отдельные соединения для управления и передачи данных. Для SFTP это не так, на SFTP-сервере нужен только порт 22, и все мультиплексируется на этом одном порте.
SFTP и FTP похожи только в отношении сценария использования. С точки зрения сети, это совершенно разные конструкции.
Однако я должен указать, что есть и FTPS, который больше похож на обычный FTP, но с включенным шифрованием.
Требование клиентов к порту 22 на обоих концах, вероятно, исходит из всей активной / пассивной операции от FTP, что не имеет отношения к SFTP.