Мне нужно отправить запрос PUT / GET / POST с помощью curl через настраиваемый порт с client1 на server2. Однако server2 принимает эти запросы только от server1 и отклоняет client1 при прямом подключении. Как лучше всего туннелировать запросы curl от client1 к server2 через server1.
В случае SSH, например, я делаю это, создавая туннель. Поэтому мне интересно, существует ли аналогичная функциональность для curl.
Curl не имеет этой функции, и в любом случае это должен быть серверный вариант. В случае HTTP это означает настройку какого-либо прокси. Если вы не можете изменить конфигурацию сервера или установить прокси, но можете использовать SSH, тогда SSH - ваш единственный вариант.
Для туннелирования порта 80 на ваш локальный компьютер через server1:
ssh -L 8080:server2:80 user@server1
Затем curl localhost: 8080
отправит запрос на порт 80 на сервере 2.
Примечание; некоторые конфигурации серверов запрещают переадресацию портов некоторым или всем пользователям.
Вы также можете использовать oneliner, это избавляет вас от необходимости поддерживать туннель в другом процессе.
ssh user@server1 curl http://server2/path -o -
Другими словами, curl не поддерживает туннели ssh, но туннели ssh поддерживают curl (вроде) ...