Скиллы Новичок Разработка и DevOps

SSH Tunnel

Скачать ZIP
10
Предупреждение о рисках!

Установка скиллов и плагинов OpenClaw осуществляется на ваш страх и риск. Все файлы были получены из открытых источников и предоставляются «как есть». Мы не гарантируем их корректную работу, безопасность или совместимость с вашей системой. Перед установкой настоятельно рекомендуется ознакомиться с содержимым кода и убедиться, что вы понимаете, какие изменения будут внесены в вашу систему.

SSH-туннелирование, проброс портов и безопасный удалённый доступ. Включает локальные, удалённые и динамические форварды, работу через jump-хосты, ProxyCommand, мультиплексирование соединений, управление ключами и отладку SSH-подключений.

Когда использовать

  • Доступ к удалённой базе данных через firewall (локальный проброс портов)
  • Публикация локального dev-сервера на удалённой машине (удалённый проброс)
  • Использование удалённого сервера как SOCKS-прокси (динамический проброс)
  • Подключение через bastion/jump-хосты
  • Управление SSH-ключами и агентом
  • Безопасная передача файлов (scp, rsync)
  • Отладка проблем SSH-подключения

Проброс портов

Локальный проброс (доступ к удалённому сервису локально)

# Проброс локального порта 5432 на localhost:5432 удалённой машины
# Пример: доступ к PostgreSQL как к локальной базе
ssh -L 5432:localhost:5432 user@remote-server

# Подключение локально:
psql -h localhost -p 5432 -U dbuser mydb

# Проброс на другой хост, доступный с удалённой машины
ssh -L 5432:db.internal:5432 user@remote-server

Удалённый проброс (экспорт локального сервиса наружу)

# Сделать локальный порт 3000 доступным на удалённом сервере (8080)
ssh -R 8080:localhost:3000 user@remote-server

# Доступ на удалённой машине:
curl http://localhost:8080

Динамический проброс (SOCKS-прокси)

# Создание SOCKS5-прокси на локальном порту 1080
ssh -D 1080 user@remote-server

# Использование через curl
curl --socks5-hostname localhost:1080 https://example.com

Jump-хосты / Bastion

ProxyJump (современный способ)

# Подключение через bastion
ssh -J bastion-user@bastion.example.com target-user@internal-server

# Цепочка из нескольких хостов
ssh -J bastion1,bastion2 target-user@internal-server

ProxyCommand (для старых систем)

ssh -o ProxyCommand="ssh -W %h:%p bastion-user@bastion" target-user@internal-server

Конфигурация SSH (~/.ssh/config)

Host *
 ServerAliveInterval 60
 ServerAliveCountMax 3
 AddKeysToAgent yes
 IdentitiesOnly yes

Host prod
 HostName 203.0.113.50
 User deploy
 IdentityFile ~/.ssh/prod_ed25519
 Port 2222

Мультиплексирование соединений

Host *
 ControlMaster auto
 ControlPath ~/.ssh/sockets/%r@%h-%p
 ControlPersist 600

mkdir -p ~/.ssh/sockets

Позволяет повторно использовать уже открытое SSH-соединение, ускоряя последующие подключения.

Управление ключами

Генерация ключей

# Рекомендуется Ed25519
ssh-keygen -t ed25519 -C "user@machine" -f ~/.ssh/mykey_ed25519

# RSA (для совместимости)
ssh-keygen -t rsa -b 4096 -C "user@machine" -f ~/.ssh/mykey_rsa

Установка ключа на сервер

ssh-copy-id -i ~/.ssh/mykey_ed25519.pub user@remote-server

SSH Agent

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/mykey_ed25519
ssh-add -l
ssh-add -D

Агент позволяет хранить ключи в памяти и не вводить пароль при каждом подключении.

Передача файлов

# scp
scp file.txt user@remote-server:/path/

# rsync (эффективнее для больших объёмов)
rsync -avz ./local/ user@remote-server:/remote/

Отладка SSH

# Подробный вывод
ssh -v user@host

# Ещё больше логов
ssh -vvv user@host

Используйте режимы verbose для диагностики проблем с подключением, ключами или сетью.


Файл из источника

11773_ssh-tunnel-1.0.0.zip