[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/ssh-tunnels":3,"mdc-6a71ku-key":484,"mdc-avxty2-key":517,"mdc--9q2hkg-key":542,"mdc--jr1003-key":572,"mdc--fzdlos-key":580,"mdc-ykuk74-key":597,"mdc--nodtn4-key":614,"related-/guides/linux/ssh-key-auth,/guides/linux/firewall-ufw-basics,/guides/linux/network-diagnostics-tools":645},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":424,"code":424,"createdAt":425,"description":426,"difficulty":427,"draft":428,"estimatedTime":429,"extension":430,"faq":431,"howToSteps":441,"howToTotalTime":454,"image":424,"keywords":455,"locale":463,"meta":464,"navigation":465,"path":466,"platform":467,"related":468,"section":472,"seo":473,"severity":424,"stem":474,"summary":475,"tags":476,"twitterCreator":424,"twitterSite":424,"type":482,"updatedAt":425,"__hash__":483},"content_ru/guides/linux/ssh-tunnels.md","Настройка SSH-туннелей: безопасный проброс портов и трафика",[7,8,9,10],"Ubuntu 20.04 / 22.04 LTS","Debian 11 / 12","RHEL / AlmaLinux 9+","OpenSSH 8.0+","FixPedia Team",{"type":13,"value":14,"toc":414},"minimark",[15,20,24,28,31,56,60,66,101,104,132,139,143,146,167,188,201,204,208,211,232,235,265,269,272,298,311,318,346,356,360,410],[16,17,19],"h2",{"id":18},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,22,23],"p",{},"SSH-туннелирование позволяет безопасно передавать незашифрованный трафик через уже существующее SSH-соединение. Вы получите защищённый доступ к внутренним базам данных, панелям управления или сетевым ресурсам без их прямого открытия в интернет. Это стандартный инструмент системных администраторов и разработчиков для временного безопасного доступа, обхода корпоративных ограничений и тестирования сервисов.",[16,25,27],{"id":26},"требования-подготовка","Требования / Подготовка",[21,29,30],{},"Перед выполнением команд убедитесь в соблюдении базовых условий:",[32,33,34,47,50,53],"ul",{},[35,36,37,38,42,43,46],"li",{},"На локальной машине и удалённом хосте установлен ",[39,40,41],"code",{},"openssh-client"," и ",[39,44,45],{},"openssh-server",".",[35,48,49],{},"У вас есть рабочий SSH-доступ к серверу (аутентификация по ключам предпочтительнее пароля).",[35,51,52],{},"Вы знаете IP-адрес или домен сервера, а также порты целевых внутренних сервисов.",[35,54,55],{},"Локальный брандмауэр не блокирует выбранные вами порты, а на сервере открыт порт 22.",[16,57,59],{"id":58},"шаг-1-локальный-проброс-портов-local-forwarding","Шаг 1: Локальный проброс портов (Local Forwarding)",[21,61,62,63,46],{},"Локальный туннель принимает соединения на вашем компьютере, шифрует их и пересылает на удалённый сервер, который доставляет их к целевому хосту. Используйте этот режим, когда нужный сервис работает только в локальной сети сервера или на ",[39,64,65],{},"127.0.0.1",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-bash shiki shiki-themes github-light github-dark","ssh -L 9090:10.0.0.5:3306 user@remote-server.com -N -f\n","bash","",[39,74,75],{"__ignoreMap":72},[76,77,80,84,88,92,95,98],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"sScJk","ssh",[76,85,87],{"class":86},"sj4cs"," -L",[76,89,91],{"class":90},"sZZnC"," 9090:10.0.0.5:3306",[76,93,94],{"class":90}," user@remote-server.com",[76,96,97],{"class":86}," -N",[76,99,100],{"class":86}," -f\n",[21,102,103],{},"Разбор параметров:",[32,105,106,120,126],{},[35,107,108,111,112,115,116,119],{},[39,109,110],{},"-L 9090:10.0.0.5:3306"," — привязывает ваш локальный порт ",[39,113,114],{},"9090"," к ",[39,117,118],{},"10.0.0.5:3306"," в сети сервера.",[35,121,122,125],{},[39,123,124],{},"-N"," — отключает запуск удалённой оболочки, оставляя только туннель.",[35,127,128,131],{},[39,129,130],{},"-f"," — переводит процесс в фон после ввода пароля или проверки ключа.",[21,133,134,135,138],{},"Теперь подключитесь к удалённой базе через ",[39,136,137],{},"mysql -u root -p -h 127.0.0.1 -P 9090",". Весь трафик будет зашифрован.",[16,140,142],{"id":141},"шаг-2-удалённый-проброс-портов-remote-forwarding","Шаг 2: Удалённый проброс портов (Remote Forwarding)",[21,144,145],{},"Обратная задача: нужно сделать порт с вашего компьютера доступным для других пользователей через внешний сервер. Это удобно для быстрой демонстрации локального веб-приложения или API.",[67,147,149],{"className":69,"code":148,"language":71,"meta":72,"style":72},"ssh -R 8888:localhost:3000 user@remote-server.com -N -f\n",[39,150,151],{"__ignoreMap":72},[76,152,153,155,158,161,163,165],{"class":78,"line":79},[76,154,83],{"class":82},[76,156,157],{"class":86}," -R",[76,159,160],{"class":90}," 8888:localhost:3000",[76,162,94],{"class":90},[76,164,97],{"class":86},[76,166,100],{"class":86},[21,168,169,170,173,174,176,177,180,181,184,185,46],{},"По умолчанию сервер привяжет порт ",[39,171,172],{},"8888"," только к ",[39,175,65],{},". Чтобы туннель стал доступен по внешнему IP, добавьте в ",[39,178,179],{},"/etc/ssh/sshd_config"," на сервере строку ",[39,182,183],{},"GatewayPorts clientspecified",", затем перезапустите демон: ",[39,186,187],{},"sudo systemctl restart sshd",[189,190,191],"blockquote",{},[21,192,193,194,196,197,200],{},"⚠️ Важно: Перед запуском убедитесь, что порт ",[39,195,172],{}," на сервере свободен. Иначе получите ошибку ",[39,198,199],{},"bind: Address already in use"," и туннель не создастся.",[202,203],"in-article-ad",{},[16,205,207],{"id":206},"шаг-3-динамический-прокси-socks5","Шаг 3: Динамический прокси (SOCKS5)",[21,209,210],{},"Динамический туннель превращает SSH-клиент в SOCKS5-прокси. Через него можно маршрутировать веб-трафик, минуя локальные ограничения сети, без необходимости указывать каждый адрес вручную.",[67,212,214],{"className":69,"code":213,"language":71,"meta":72,"style":72},"ssh -D 1080 user@remote-server.com -N -f\n",[39,215,216],{"__ignoreMap":72},[76,217,218,220,223,226,228,230],{"class":78,"line":79},[76,219,83],{"class":82},[76,221,222],{"class":86}," -D",[76,224,225],{"class":86}," 1080",[76,227,94],{"class":90},[76,229,97],{"class":86},[76,231,100],{"class":86},[21,233,234],{},"Для использования настройте клиентское приложение:",[32,236,237,251],{},[35,238,239,240,242,243,246,247,250],{},"В браузерах Chromium/Firefox перейдите в настройки сети и укажите ",[39,241,65],{}," порт ",[39,244,245],{},"1080",", тип ",[39,248,249],{},"SOCKS v5",". Обязательно включите опцию «DNS через прокси», иначе утечки DNS сведут безопасность на нет.",[35,252,253,254,257,258,261,262,46],{},"Для терминала оберните вызовы через ",[39,255,256],{},"proxychains"," или ",[39,259,260],{},"tsocks",", предварительно настроив ",[39,263,264],{},"/etc/proxychains.conf",[16,266,268],{"id":267},"проверка-результата","Проверка результата",[21,270,271],{},"Убедиться в корректной работе туннелей можно одной командой:",[67,273,275],{"className":69,"code":274,"language":71,"meta":72,"style":72},"ss -tulpn | grep -E '9090|8888|1080'\n",[39,276,277],{"__ignoreMap":72},[76,278,279,282,285,289,292,295],{"class":78,"line":79},[76,280,281],{"class":82},"ss",[76,283,284],{"class":86}," -tulpn",[76,286,288],{"class":287},"szBVR"," |",[76,290,291],{"class":82}," grep",[76,293,294],{"class":86}," -E",[76,296,297],{"class":90}," '9090|8888|1080'\n",[21,299,300,301,257,303,306,307,310],{},"Вывод покажет процессы, слушающие указанные порты, и подтвердит, что они привязаны к ",[39,302,65],{},[39,304,305],{},"::1",". Для проверки передачи данных выполните ",[39,308,309],{},"curl -v http://127.0.0.1:9090"," или откройте целевой ресурс в браузере.",[21,312,313,314,317],{},"Чтобы туннель переживал обрывы сети, используйте ",[39,315,316],{},"autossh",":",[67,319,321],{"className":69,"code":320,"language":71,"meta":72,"style":72},"autossh -M 0 -N -f -L 9090:127.0.0.1:80 user@remote-server.com\n",[39,322,323],{"__ignoreMap":72},[76,324,325,327,330,333,335,338,340,343],{"class":78,"line":79},[76,326,316],{"class":82},[76,328,329],{"class":86}," -M",[76,331,332],{"class":86}," 0",[76,334,97],{"class":86},[76,336,337],{"class":86}," -f",[76,339,87],{"class":86},[76,341,342],{"class":90}," 9090:127.0.0.1:80",[76,344,345],{"class":90}," user@remote-server.com\n",[21,347,348,349,352,353,355],{},"Флаг ",[39,350,351],{},"-M 0"," отключает собственный мониторинг ",[39,354,316],{}," и делегирует проверку SSH-keepalive.",[16,357,359],{"id":358},"возможные-проблемы","Возможные проблемы",[32,361,362,379,396],{},[35,363,364,368,369,371,372,375,376,378],{},[365,366,367],"strong",{},"Connection refused при подключении к локальному порту."," Проверьте, не завершился ли фоновый процесс SSH. Убедитесь, что вы обращаетесь именно к ",[39,370,65],{},", а не к ",[39,373,374],{},"localhost"," (иногда система резолвит его в ",[39,377,305],{},", где порт не привязан).",[35,380,381,384,385,388,389,42,392,395],{},[365,382,383],{},"Туннель разрывается при долгом простое."," Добавьте в ",[39,386,387],{},"~/.ssh/config"," параметры ",[39,390,391],{},"ServerAliveInterval 60",[39,393,394],{},"ServerAliveCountMax 3",". Клиент начнёт отправлять ping каждые 60 секунд и восстановит соединение при потере ответа.",[35,397,398,401,402,405,406,409],{},[365,399,400],{},"Привязка к IPv6 вызывает конфликты."," Если ваша сеть активно использует IPv6, явно укажите версию протокола в команде: ",[39,403,404],{},"ssh -4 -L ..."," или добавьте ",[39,407,408],{},"AddressFamily inet"," в конфигурационный файл SSH.",[411,412,413],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":72,"searchDepth":415,"depth":415,"links":416},2,[417,418,419,420,421,422,423],{"id":18,"depth":415,"text":19},{"id":26,"depth":415,"text":27},{"id":58,"depth":415,"text":59},{"id":141,"depth":415,"text":142},{"id":206,"depth":415,"text":207},{"id":267,"depth":415,"text":268},{"id":358,"depth":415,"text":359},null,"2026-04-05 00:03:41","Освойте создание SSH-туннелей: пошаговый гайд по настройке локального, динамического и удалённого проброса портов. Защитите трафик за 15 минут!","medium",false,"15-20 мин","md",[432,435,438],{"question":433,"answer":434},"Почему SSH-туннель сразу закрывается после создания?","Сессия завершается, когда завершается процесс SSH. Добавьте флаг `-N` (не выполнять удалённые команды) и `-f` (перейти в фоновый режим) или используйте утилиту `autossh` для поддержания соединения.",{"question":436,"answer":437},"Можно ли перенаправлять UDP-трафик через стандартный SSH?","Нет, SSH работает только с TCP. Для UDP-трафика используйте `socat`, `udp2raw` или настройте WireGuard поверх SSH-туннеля.",{"question":439,"answer":440},"Как разрешить создание туннелей на стороне сервера?","Убедитесь, что в `/etc/ssh/sshd_config` сервера установлены параметры `AllowTcpForwarding yes` и `GatewayPorts clientspecified` (для удалённого проброса на внешний интерфейс).",[442,445,448,451],{"name":443,"text":444},"Подготовка окружения","Убедитесь, что на клиенте и сервере установлен OpenSSH, и у вас есть доступ к серверу по SSH с правами пользователя.",{"name":446,"text":447},"Создание локального туннеля (-L)","Запустите команду `ssh -L 8080:localhost:80 user@server`, чтобы направить локальный порт 8080 на удалённый порт 80 через зашифрованный канал.",{"name":449,"text":450},"Настройка динамического прокси (-D)","Используйте `ssh -D 1080 user@server` для создания SOCKS5-прокси, через который браузер или другие приложения смогут маршрутизировать весь трафик.",{"name":452,"text":453},"Проверка и поддержание соединения","Проверьте открытые порты через `netstat` или `ss` и добавьте флаги `-N -f` для работы туннеля в фоне без открытия оболочки.","PT15M",[456,457,458,459,460,461,462],"настройка ssh туннеля linux","проброс портов через ssh -L","ssh динамический прокси -D","удаленный проброс ssh -R","безопасный доступ к внутренним сервисам","ssh tunneling guide ru","ошибка bind: Address already in use ssh","ru_RU",{},true,"/guides/linux/ssh-tunnels","linux",[469,470,471],"/guides/linux/ssh-key-auth","/guides/linux/firewall-ufw-basics","/guides/linux/network-diagnostics-tools","Гайды по Linux и сетям",{"title":5,"description":426},"guides/linux/ssh-tunnels","В этом руководстве вы научитесь создавать локальные, удалённые и динамические SSH-туннели. Вы получите готовые команды и поймёте, как безопасно маршрутизировать трафик через зашифрованное соединение.",[467,83,477,478,479,480,481],"networking","туннелирование","безопасность","проброс портов","sysadmin","guide","ge7dXTcLInUjJ1bPkLlP8iXZ-P8NmHcKZEHAERv9J4A",{"data":485,"body":486},{},{"type":487,"children":488},"root",[489],{"type":490,"tag":21,"props":491,"children":492},"element",{},[493,496,501,503,508,510,515],{"type":494,"value":495},"text","Сессия завершается, когда завершается процесс SSH. Добавьте флаг ",{"type":490,"tag":39,"props":497,"children":499},{"className":498},[],[500],{"type":494,"value":124},{"type":494,"value":502}," (не выполнять удалённые команды) и ",{"type":490,"tag":39,"props":504,"children":506},{"className":505},[],[507],{"type":494,"value":130},{"type":494,"value":509}," (перейти в фоновый режим) или используйте утилиту ",{"type":490,"tag":39,"props":511,"children":513},{"className":512},[],[514],{"type":494,"value":316},{"type":494,"value":516}," для поддержания соединения.",{"data":518,"body":519},{},{"type":487,"children":520},[521],{"type":490,"tag":21,"props":522,"children":523},{},[524,526,532,534,540],{"type":494,"value":525},"Нет, SSH работает только с TCP. Для UDP-трафика используйте ",{"type":490,"tag":39,"props":527,"children":529},{"className":528},[],[530],{"type":494,"value":531},"socat",{"type":494,"value":533},", ",{"type":490,"tag":39,"props":535,"children":537},{"className":536},[],[538],{"type":494,"value":539},"udp2raw",{"type":494,"value":541}," или настройте WireGuard поверх SSH-туннеля.",{"data":543,"body":544},{},{"type":487,"children":545},[546],{"type":490,"tag":21,"props":547,"children":548},{},[549,551,556,558,564,565,570],{"type":494,"value":550},"Убедитесь, что в ",{"type":490,"tag":39,"props":552,"children":554},{"className":553},[],[555],{"type":494,"value":179},{"type":494,"value":557}," сервера установлены параметры ",{"type":490,"tag":39,"props":559,"children":561},{"className":560},[],[562],{"type":494,"value":563},"AllowTcpForwarding yes",{"type":494,"value":42},{"type":490,"tag":39,"props":566,"children":568},{"className":567},[],[569],{"type":494,"value":183},{"type":494,"value":571}," (для удалённого проброса на внешний интерфейс).",{"data":573,"body":574},{},{"type":487,"children":575},[576],{"type":490,"tag":21,"props":577,"children":578},{},[579],{"type":494,"value":444},{"data":581,"body":582},{},{"type":487,"children":583},[584],{"type":490,"tag":21,"props":585,"children":586},{},[587,589,595],{"type":494,"value":588},"Запустите команду ",{"type":490,"tag":39,"props":590,"children":592},{"className":591},[],[593],{"type":494,"value":594},"ssh -L 8080:localhost:80 user@server",{"type":494,"value":596},", чтобы направить локальный порт 8080 на удалённый порт 80 через зашифрованный канал.",{"data":598,"body":599},{},{"type":487,"children":600},[601],{"type":490,"tag":21,"props":602,"children":603},{},[604,606,612],{"type":494,"value":605},"Используйте ",{"type":490,"tag":39,"props":607,"children":609},{"className":608},[],[610],{"type":494,"value":611},"ssh -D 1080 user@server",{"type":494,"value":613}," для создания SOCKS5-прокси, через который браузер или другие приложения смогут маршрутизировать весь трафик.",{"data":615,"body":616},{},{"type":487,"children":617},[618],{"type":490,"tag":21,"props":619,"children":620},{},[621,623,629,630,635,637,643],{"type":494,"value":622},"Проверьте открытые порты через ",{"type":490,"tag":39,"props":624,"children":626},{"className":625},[],[627],{"type":494,"value":628},"netstat",{"type":494,"value":257},{"type":490,"tag":39,"props":631,"children":633},{"className":632},[],[634],{"type":494,"value":281},{"type":494,"value":636}," и добавьте флаги ",{"type":490,"tag":39,"props":638,"children":640},{"className":639},[],[641],{"type":494,"value":642},"-N -f",{"type":494,"value":644}," для работы туннеля в фоне без открытия оболочки.",[]]