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

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


ssh

Це стара версія документу!


Сервер

Если к серверу необходимо подключаться с компьютеров, находящихся в сети с жёсткими ограничениями (вплоть до закрытия всех портов, кроме HTTP (80) и HTTPS (443), можно настроить SSH-демон на прослушивание порта 443:

/etc/ssh/sshd_config
Port 22
Port 443

Однако, этот способ не годится, если параллельно должен работать веб-сервер, выдающий страницы по протоколу HTTPS. В таком случае можно воспользоваться одним из приведённых ниже способов.

SSH через HTTPS

Один из способов - настроить веб-сервер на передачу SSH-трафика (определяемого по какому-либо критерию; например, по заданному URL или доменному имени) SSH-демону, работающему на каком-то другом порту.

SSH over SSL, episode 3: Avoiding using a patched apache.

Tunneling SSH over HTTP(S)

К сожалению, в настоящее время (осень 2013) только Apache поддерживает метод “CONNECT”, необходимый для этой цели.

Несколько сервисов на 443 порту

Можно воспользоваться мультиплексором протоколов sslh, который слушает порт 443 и сортирует входящий трафик по соответствующим сервисам далее (SSH, веб-сервер, …)

Web SSH

Перенаправление портов

Чтобы разрешить клиентам перенаправлять подключения к некоторым портам сервера на свои локальные компьютеры, нужно в файле /etc/ssh/sshd_config разрешить параметр GatewayPorts. Согласно man sshd_config, этот параметр может иметь три значения: no, yes и clientspecified. Будем использовать последнее, т.к. оно позволяет клиенту самостоятельно выбрать, разрешать внешним компьютерам использование обратного тоннеля или нет.

/etc/ssh/sshd_config
GatewayPorts clientspecified

Клиент

TCP-тоннель

Необходимо установить программу, создающую TCP-тоннель через прокси-сервер. Например, corkscrew. После этого отредактировать пользовательский файл настроек SSH следующим образом:

~/.ssh/config
Host *
  ProxyCommand corkscrew <proxy_server> <proxy_port> %h %p

Если прокси-сервер требует логина и пароля, то конфигурация SSH-клиента должна выглядеть следующим образом:

~/.ssh/config
Host *
  ProxyCommand corkscrew <username:password@proxy_server> <proxy_port> %h %p

Или так? FIXME

Создаём файл, содержащий имя пользователя и пароль для доступа к прокси-серверу:

~/.corkscrew-auth
username:password

Затем добавляем путь к этому файлу в файл конфигурации SSH:

~/.ssh/config
Host *
  ProxyCommand corkscrew <proxy_server> <proxy_port> %h %p /home/username/.corkscrew-auth

SSH-тоннель

ssh -f -N -L<local_port>:jabber.od.ua:5222 -p <ssh_server_port> <ssh_server>

-f уйти в фон

-N не выполнять никаких команд

Обратный SSH-тоннель

Обратный SSH-тоннель позволяет перенаправлять соединения, устанавливаемые с некоторым портом удалённого сервера, на наш локальный компьютер1)

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

Следует отметить, что для реализации последнего варианта необходимо разрешить на сервере параметр ''GatewayPorts''.

Теперь любое подключение к серверу <ssh_server> в порт 19999 будет перенаправлено на наш локальный компьютер в порт 22. Разумеется, номера портов можно менять на любые другие. С тем только исключением, что привелегированные порты использовать может только администратор системы (root).

Ссылки

ssh.1394793162.txt.bz2 · В останнє змінено: 2014/11/23 23:06 (зовнішнє редагування)