Мне нужно отправить запрос 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.
Заметка; некоторые конфигурации сервера запрещают переадресацию портов некоторым или всем пользователям.