Користувальницькькі налаштування

Налаштування сайту


ssh

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
Наступна ревізія Both sides next revision
ssh [2014/03/14 12:29]
wombat [Сервер] Перенаправление портов
ssh [2014/03/14 12:32]
wombat [Обратный SSH-тоннель]
Рядок 1: Рядок 1:
 +====== Сервер ======
  
 +Если к серверу необходимо подключаться с компьютеров,​ находящихся в сети с жёсткими ограничениями (вплоть до закрытия всех портов,​ кроме HTTP (80) и HTTPS (443), можно настроить SSH-демон на прослушивание порта 443:
 +
 +<file txt /​etc/​ssh/​sshd_config>​
 +Port 22
 +Port 443
 +</​file>​
 +
 +Однако,​ этот способ не годится,​ если параллельно должен работать веб-сервер,​ выдающий страницы по протоколу HTTPS. В таком случае можно воспользоваться одним из приведённых ниже способов.
 +===== SSH через HTTPS =====
 +
 +Один из способов - настроить веб-сервер на передачу SSH-трафика (определяемого по какому-либо критерию;​ например,​ по заданному URL или доменному имени) SSH-демону,​ работающему на каком-то другом порту.
 +
 +[[http://​blog.chmd.fr/​ssh-over-ssl-episode-3-avoiding-using-a-patched-apache.html | SSH over SSL, episode 3: Avoiding using a patched apache.]]
 +
 +[[http://​dag.wieers.com/​howto/​ssh-http-tunneling/​ | Tunneling SSH over HTTP(S)]]
 +
 +К сожалению,​ в настоящее время (осень 2013) только Apache поддерживает метод "​CONNECT",​ необходимый для этой цели.
 +
 +
 +===== Несколько сервисов на 443 порту =====
 +
 +Можно воспользоваться мультиплексором протоколов [[sslh | sslh]], который слушает порт 443 и сортирует входящий трафик по соответствующим сервисам далее (SSH, веб-сервер,​ ...)
 +===== Web SSH =====
 +
 +https://​en.wikipedia.org/​wiki/​Web-based_SSH
 +
 +[[http://​anyterm.org/​ | AnyTerm]] in C
 +
 +[[http://​code.google.com/​p/​shellinabox/​wiki/​shellinaboxd_man | Shell in a box]]
 +
 +[[https://​github.com/​fgallaire/​achilterm | Achilterm]] in Python
 +
 +===== Перенаправление портов =====
 +
 +Чтобы разрешить клиентам перенаправлять подключения к некоторым портам сервера на свои локальные компьютеры,​ нужно в файле //''/​etc/​ssh/​sshd_config''//​ разрешить параметр ''​GatewayPorts''​. Согласно [[http://​linux.die.net/​man/​5/​sshd_config | man sshd_config]],​ этот параметр может иметь три значения:​ ''​no'',​ ''​yes''​ и ''​clientspecified''​. Будем использовать последнее,​ т.к. оно позволяет клиенту самостоятельно выбрать,​ разрешать внешним компьютерам использование обратного тоннеля или нет.
 +
 +<file txt /​etc/​ssh/​sshd_config>​
 +GatewayPorts clientspecified
 +</​file>​
 +
 +
 +====== Клиент ======
 +
 +===== TCP-тоннель =====
 +
 +Необходимо установить программу,​ создающую TCP-тоннель через прокси-сервер. Например,​ ''​corkscrew''​. После этого отредактировать пользовательский файл настроек SSH следующим образом:​
 +
 +<file txt ~/​.ssh/​config>​
 +Host *
 +  ProxyCommand corkscrew <​proxy_server>​ <​proxy_port>​ %h %p
 +</​file>​
 +
 +Если прокси-сервер требует логина и пароля,​ то конфигурация SSH-клиента должна выглядеть следующим образом:​
 +
 +<file txt ~/​.ssh/​config>​
 +Host *
 +  ProxyCommand corkscrew <​username:​password@proxy_server>​ <​proxy_port>​ %h %p
 +</​file>​
 +
 +Или так? FIXME
 +
 +Создаём файл, содержащий имя пользователя и пароль для доступа к прокси-серверу:​
 +
 +<file txt ~/​.corkscrew-auth>​
 +username:​password
 +</​file>​
 +
 +Затем добавляем путь к этому файлу в файл конфигурации SSH:
 +
 +<file txt ~/​.ssh/​config>​
 +Host *
 +  ProxyCommand corkscrew <​proxy_server>​ <​proxy_port>​ %h %p /​home/​username/​.corkscrew-auth
 +</​file>​
 +
 +
 +===== SSH-тоннель =====
 +
 +  ssh -f -N -L<​local_port>:​jabber.od.ua:​5222 -p <​ssh_server_port>​ <​ssh_server>​
 +
 +''​-f''​ уйти в фон
 +
 +''​-N''​ не выполнять никаких команд
 +
 +===== Обратный SSH-тоннель =====
 +
 +Обратный SSH-тоннель позволяет перенаправлять соединения,​ устанавливаемые с некоторым портом удалённого сервера,​ на наш локальный компьютер((рецепт взят с http://​www.howtoforge.com/​reverse-ssh-tunneling))
 +
 +  ssh -R 19999:​localhost:​22 -p <​ssh_server_port>​ <​ssh_server_user>​@<​ssh_server>​
 +
 +после чего станет возможным с удалённого сервера (<​ssh_server>​) подключаться к локальному компьютеру до тех пор, пока живо вышеустановленное соединение.
 +
 +  ssh localhost -p 19999
 +
 +По умолчанию ssh перенаправляет подключения только к локальному сетевому интерфейсу удалённого сервера (его localhost). Это означает,​ что подключения извне на этом удалённом сервере в указанный порт не принимаются. Если же неообходимо разрешить перенаправление соединений к нашему локальному компьютеру не только непосредственно из консоли удалённого сервера,​ но и для любых других компьютеров глобальной сети, то устанавливать обратный тоннель следует так:
 +
 +  ssh -R *:​19999:​localhost:​22 -p <​ssh_server_port>​ <​ssh_server_user>​@<​ssh_server>​
 +
 +Здесь звёздочка (''​*''​) указывает,​ что "​слушать"​ удалённому серверу надо на всех его сетевых интерфейсов. Вместо неё можно указать и конкретный IP-адрес,​ на котором слушать. Тогда сервер будет принимать подключения только на указанном сетевом интерфейсе.
 +
 +Следует отметить,​ что для реализации последнего варианта необходимо [[ssh#​Перенаправление портов|разрешить на сервере параметр ''​GatewayPorts''​]].
 +
 +Теперь любое подключение к серверу <​ssh_server>​ в порт ''​19999''​ будет перенаправлено на наш локальный компьютер в порт ''​22''​. Разумеется,​ номера портов можно менять на любые другие. С тем только исключением,​ что привелегированные порты использовать может только администратор системы (root).
 +====== Ссылки ======
 +
 +[[http://​habrahabr.ru/​post/​81607/​ | SSH-туннели — пробрасываем порт]] на Хабрахабре
 +
 +Викикнига [[http://​ru.wikibooks.org/​wiki/​SSH_%D1%82%D1%83%D0%BD%D0%BD%D0%B5%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 | SSH туннелирование]]
ssh.txt · В останнє змінено: 2015/11/18 20:11 by wombat