Туннелирование FTP-соединения из дома, где сервер принимает только локальные IP-адреса

11

Мне нужно получить доступ к FTP-серверу на работе, но сервер будет принимать только локальные IP-адреса. Я не могу получить к нему доступ с моей домашней машины. Я смог подключиться через ssh к своей рабочей машине Unix через PuTTY и оттуда успешно открыть консольное FTP-соединение с FTP-сервером.

Я мог бы работать через это, но я бы предпочел не делать этого, поскольку это очень громоздко для меня. Я бы предпочел туннелировать FTP-соединение через рабочую машину через PuTTY, чтобы я мог использовать свой FTP-клиент, FileZilla, для удовлетворения моих потребностей FTP на сервере. Конечно это через порт 21.

Я знаю, что PuTTY способен переадресовывать порты через ssh, я просто не знаю, как его использовать.

Домой -> Работа -> Сервер.

случайный
источник
В загрузке и загрузке через прокси-соединение SOCKS нет ничего особенного. Разница в том, что ваше домашнее интернет-соединение, вероятно, будет иметь низкую производительность при загрузке (исходящей) по сравнению с производительностью при загрузке (входящей). Возможно, нам понадобится больше журналов, чтобы можно было его диагностировать.
EightBitTony
Я пришел к выводу, что, вероятно, полностью рассмотрю другую проблему и буду работать над созданием нового вопроса, посвященного этой конкретной проблеме. Большое спасибо за вашу помощь EightBitTony!
Бен Джейкобсон
Возможно, вы захотите зарегистрировать свою учетную запись «Ошибка сервера» с теми же учетными данными, что и здесь, чтобы ответить на этот вопрос @ben
random

Ответы:

13

Используйте SOCKS прокси.

Замазка окно

Исходный порт теперь (локально) является прокси-сервером SOCKS. Настройте FileZilla для использования его в качестве SOCKS-прокси (см. Ниже). Через него откроется соединение с хостом, с которым вы работаете по ssh (на вашей рабочей машине), а затем подключитесь оттуда к любому IP-адресу, который вы ему предоставите. Работает для всего с поддержкой SOCKS, включая FTP.

Остальная часть конфигурации PuTTY остается неизменной - настройте порты (как показано) и затем подключите этот сеанс PuTTY к вашей рабочей машине через SSH.

Вот как должна выглядеть опция FileZilla:

введите описание изображения здесь

Когда вы устанавливаете цель для FTP-соединения, используйте IP-адрес, а не имя хоста, потому что разрешение DNS может все еще происходить локально, и вы этого не хотите.

Все это безопасно и невидимо - оно выглядит как простое SSH-соединение со всем остальным в сети.

NB. Если вы хотите сделать это из командной строки, вы можете использовать PuTTY plink.exeдля следующих действий:

plink -ssh -D 9090 you@your.work.laptop.example

он достигает того же самого без необходимости создавать профиль PuTTY или использовать графический интерфейс.

EightBitTony
источник
Мне нравится такой способ сделать это немного больше, чем мой ответ. Вы можете установить прокси SOCKS в filezilla в разделе «Общий прокси» и не забывать использовать его в «пассивном режиме».
Филипп Коулинг
2

Во-первых, гораздо проще / возможно, лучше использовать SCP. Поскольку у вас есть SSH, вы также можете иметь доступ к SCP. Но я не знаю вашу сеть, так что к вопросу ...

Во-первых, убедитесь, что ваш клиент настроен на использование FTP в режиме ACTIVE. Я хотел предложить использовать пассивный режим, но вы не можете контролировать, какие порты будут использоваться.

Во-вторых, ограничьте количество портов, которые ваш FTP-клиент будет использовать в активном режиме, до нескольких. Меньше 10 будет хорошо. И вот почему.

В-третьих, создайте переадресацию удаленных портов для всех этих портов.

Это должно заставить его работать

Филип Коуллинг
источник
2

Вот как просмотреть файловую систему внутреннего сервера (за NAT), с помощью FileZilla или Nautilus File Manager - с использованием SFTP (сеанс SSH на TCP-порту 22) через сервер шлюза (вне NAT):

  1. Первый запуск в Терминале:

sudo ssh -L 9090: {имя или IP-адрес внутреннего сервера}: 22 root @ {имя или IP-адрес сервера шлюза}

  1. Затем создайте новое соединение.

    В FileZilla:

    • Хост: sftp: //127.0.0.1
    • Имя пользователя / пароль: учетные данные внутреннего сервера.
    • Порт: 9090 (тот же порт, что и в команде терминала).

Или в Наутилусе:

sftp://127.0.0.1:9090/, затем вам будет предложено ввести учетные данные внутреннего сервера.

Теперь вы сможете просматривать внутреннюю файловую систему сервера.


введите описание изображения здесь

Примечание: Как вы можете видеть, он не требует установки SOCKS Proxy ни в Putty, ни в FileZilla :)

Ноам Манос
источник
Спасибо! Это именно то, что я искал!
Лоренцо-с