{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "M9K blog: заметки с тегом curl-over-ssh",
    "_rss_description": "Заметки обо всём: devops, lifestyle, культура.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/blog.m9k.space\/tags\/curl-over-ssh\/",
    "feed_url": "https:\/\/blog.m9k.space\/tags\/curl-over-ssh\/json\/",
    "icon": "https:\/\/blog.m9k.space\/pictures\/userpic\/userpic@2x.jpg?1769095194",
    "authors": [
        {
            "name": "M",
            "url": "https:\/\/blog.m9k.space\/",
            "avatar": "https:\/\/blog.m9k.space\/pictures\/userpic\/userpic@2x.jpg?1769095194"
        }
    ],
    "items": [
        {
            "id": "200",
            "url": "https:\/\/blog.m9k.space\/all\/curl-over-ssh-tunnel\/",
            "title": "Curl over ssh-tls-tunnel",
            "content_html": "<p>Есть ресурс resource.name, на который нужно ходить curl-ом с засылкой данных через JSON. Специфика ресурса такова, что он принимает соединения через TLS 1.3.<br \/>\nЕсть сервер A server.name, на котором нет выхода на нужный ресурс, но есть Nginx, и есть ssh-доступ до сервера B<br \/>\nЕсть сервер B, на котором есть выход на нужный ресурс, но сам сервер очень старый, и TLS на нём не проходит по требования resource.name.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">printf &#039;&#039; | openssl s_client -connect 127.0.0.1:8443 -servername resource.name -tls1_3 -brief<\/code><\/pre><p>Костылим:<br \/>\nНа сервере A поднимаем туннель на внутренний порт:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ssh -fN -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -L 8443:resource.name:443 user@serverB<\/code><\/pre><p>На Nginx рисуем конфиг:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">server {\n        listen 9090;\n        server_name         server.name;\n\n        access_log  \/site\/logs\/nginx\/port_9090.log  main;\n        error_log   \/site\/logs\/nginx\/port_9090.error.log;\n\nlocation \/ {\n        proxy_pass https:\/\/127.0.0.1:8443;\n\n        proxy_set_header Host resource.name;\n        proxy_ssl_server_name on;\n        proxy_ssl_name resource.name;\n        proxy_ssl_protocols TLSv1.3;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto https;\n        proxy_connect_timeout 10s;\n        proxy_read_timeout 60s;\n        proxy_ssl_verify off;\n}\n}<\/code><\/pre><p>Кидаемся тестовым запросом:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">curl -v -X POST &#039;http:\/\/server.name:9090\/resource&#039; -H &#039;Content-Type: application\/json&#039; --data &#039;{&quot;login&quot;:&quot;$LOGIN&quot;,&quot;password&quot;:&quot;$PASSWORD&quot;}&#039;<\/code><\/pre>",
            "summary": "Есть ресурс resource.name, на который нужно ходить curl-ом с засылкой данных через JSON. Специфика ресурса такова, что он принимает соединения через TLS 1",
            "date_published": "2025-08-14T17:21:23+07:00",
            "date_modified": "2025-08-14T17:43:11+07:00",
            "tags": [
                "curl",
                "curl-over-ssh",
                "linux",
                "ssh",
                "системное администрирование"
            ],
            "_date_published_rfc2822": "Thu, 14 Aug 2025 17:21:23 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "200",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}