====== SSH: Туннелирование ====== ===== Туннель для X-Server ===== Достаточно типовая задача. Вы работаете за машиной на которой запущен X-Server (к примеру xorg, xfree86 или что-то из коммерческих аналогов), и у Вас возникло непреодолимое желание поработать с удалённой машиной и неприменно воспользоваться каким нибудь приложением требующим красивых графических окошек. К примеру ''xcalc'', но это не столь важно. В дни своей бурной молодости я с радостью первооткрывателя заходил через ssh на удалённую машину. Прописывал там переменную ''DISPLAY'', а на локальной машине разрешал иксам подключение ''xhost remote-host''. Теперь я постарел, стал ленивый и совершаю меньше телодвижений. local-side $ ssh -X remote-user@remote-host remote-side$ xcalc Всё оказалось просто. И, замечу, безопасно, поскольку туннель проложен через шифрованное соединение. ===== Произвольные туннели ===== Прокладывать произвольные туннели чуть сложнее, чем туннель для иксов. Для этого служат ключи ''-L'' и ''-R''. -R [bind_address:]port:host:hostport Прокладывает туннель с **удалённой** (**R**emote) машины на локальную. Действие таково. На удалённой машине открывается на прослушивание порт **port**, если нужно его можно привязать к конкретному адресу **bind_address**. При подключении клиента на этот порт подключение пробрасывается через шифрованное соединение на машину **host** (т.е. не обязательно на ту, с которой Вы подключились по SSH) на порт **hostport**. Аналогичным образом прокладывается туннель с **локальной** (**L**ocal) машины на удалённую. -L [bind_address:]port:host:hostport Понятно, что теперь порт на прослушивание будет открываться на Вашей машине. Ключи могут повторяться и комбинироваться. Так Вы сможете за один раз создать несколько туннелей. При использовании ''IPv6'' адресации следует использовать альтернативную форму записи: -R [bind_address/]port/host/hostport -L [bind_address/]port/host/hostport ===== SOCKS ===== С помощью опции ''-D //bind-local-port//'' можно создать **SOCKS4/5** сервер на ''bind-local-port'' порту локальной машины. ssh -D 2080 remote-user@remote-host откроет SSH соединение и откроет на ''2080'' порту SOCKS сервер запросы к которому будут туннелироваться на удалённую машину и уже оттуда будет производится подключение. **Замечание:** Любое приложение можно научить работать через SOCKS с помощью утулиты [[http://tsocks.sourceforge.net/|tsocks]] . Так же можно обратить внимание на [[http://proxychains.sourceforge.net/|proxychains]]/* и **connect-proxy***/. --- //[[plumbum@rambler.ru|Ivan A-R]] 23.07.2006 14:06// {{tag>ssh tips article}} ~~DISCUSSION~~