Назад | Перейти на главную страницу

Curl через промежуточный сервер

Мне нужно отправить запрос PUT / GET / POST с помощью curl через настраиваемый порт с client1 на server2. Однако server2 принимает эти запросы только от server1 и отклоняет client1 при прямом подключении. Каким будет лучший способ туннелирования запросов curl от client1 к server2 через server1.

В случае, например, SSH, я делаю это, создавая туннель. Поэтому мне интересно, существует ли аналогичная функциональность для curl.

Вы также можете использовать oneliner, это избавляет вас от необходимости поддерживать туннель в другом процессе.

ssh user@server1 curl http://server2/path -o -

Другими словами, curl не поддерживает туннели ssh, но туннели ssh поддерживают curl (вроде) ...

Curl не имеет этой функции, и в любом случае это должен быть серверный вариант. В случае HTTP это означает настройку какого-либо прокси. Если вы не можете изменить конфигурацию сервера или установить прокси, но можете использовать SSH, тогда SSH - ваш единственный вариант.

Чтобы туннелировать порт 80 на локальный компьютер через server1:

ssh -L 8080:server2:80 user@server1

затем curl localhost:8080 отправит запрос на порт 80 на server2.

Заметка; некоторые конфигурации сервера запрещают переадресацию портов некоторым или всем пользователям.