Установка скиллов и плагинов 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 для диагностики проблем с подключением, ключами или сетью.
Файл из источника