10

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

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

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

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

3 ответа3

13

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

Замазка окна

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

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

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

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

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

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

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

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

2

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

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

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

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

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

1

Вот как просмотреть файловую систему внутреннего сервера (за 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 :)

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