Создание безопасного соединения между локальным и удаленным хостами называется SSH-туннелированием или переадресацией портов. Все соединения, выполняемые с помощью SSH-туннелирования, зашифрованы. Эта функция SSH полезна для многих целей, таких как безопасное управление базой данных ограниченного сервера, реализация базовой VPN (виртуальная частная сеть), использование различных сервисов без открытия порта на брандмауэре и т. д. Перенаправление портов SSH может быть выполнено в три этапа. различные пути. Это перенаправление локальных портов, перенаправление удаленных портов и динамическое перенаправление портов. В этой статье были объяснены способы использования SSH-туннелирования или переадресации портов.
Предпосылки
Перед тем, как приступить к действиям этой статьи, необходимо выполнить следующие действия.
A. Включите службу SSH в Ubuntu, если она не была включена ранее.
B. Создайте пары ключей SSH для выполнения команд на удаленном сервере. Выполните следующую команду, чтобы создать открытый и закрытый ключи. Закрытый ключ будет храниться на удаленном сервере, а открытые ключи будут надежно храниться на клиенте.
$ ssh-keygen -t rsa
C. Выполните следующую команду, чтобы открыть файл sshd_config с помощью редактора nano и добавить некоторые необходимые конфигурации.
$ sudo nano /etc/ssh/sshd_config
Добавьте в файл следующие строки, чтобы включить учетную запись root и аутентификацию на основе пароля.
PasswordAuthentication yes PermitRootLogin yes
D. Выполните следующую команду, чтобы перезапустить службу SSH.
$ sudo service ssh restart
Перенаправление локального порта
Он используется для перенаправления порта с клиентского компьютера на порт серверного компьютера, а затем он будет перенаправлен на целевой компьютер. Клиентский компьютер прослушивает данный порт и туннелирует соединение с этого порта на конкретный порт серверного компьютера в этом типе пересылки. Здесь целевой машиной может быть любой удаленный сервер или другая машина. Эта пересылка в основном используется во внутренней сети, такой как сервер VNC (Virtual Network Computing).
Переадресация удаленного порта
Противоположностью переадресации локального порта является переадресация удаленного порта. Он используется для перенаправления порта с серверной машины на порт клиентской машины, а затем он будет перенаправлен на конечный компьютер. Серверный компьютер прослушивает данный порт и туннелирует соединение с этого порта на конкретный порт клиентского компьютера в этом типе пересылки. Здесь целевой машиной может быть любая локальная машина или другая машина.
Динамическая переадресация портов
Он используется для создания сокета на клиентском компьютере, который будет работать как прокси-сервер SOCKS, и когда клиент подключается к порту, соединение будет перенаправлено на серверный компьютер. Затем он будет перенаправлен на динамический порт целевой машины. Приложения, использующие прокси-сервер SOCKS, будут подключаться к серверу, который будет перенаправлять трафик на конечный компьютер.
Примеры SSH-туннелирования или переадресации портов
Здесь показаны примеры SSH-туннелирования и переадресации портов с использованием двух учетных записей локального сервера. Вы можете выполнить тот же процесс для удаленного сервера. Здесь имя пользователя серверной машины – «andreyex», а имя пользователя клиентской машины – «alex». Здесь на трех примерах показаны три типа переадресации портов SSH.
A. Доступ к удаленным ресурсам с клиентского компьютера
К ресурсам удаленного компьютера можно получить доступ с клиентского компьютера с помощью переадресации локального порта. Обычно он подключается к серверу SSH, но в этом случае вы должны использовать параметр -L с командой ssh, указав локальный порт, удаленный адрес и удаленный порт. Синтаксис переадресации локального порта приведен ниже.
ssh -L local_port:remote_address:remote_port <a href="mailto:username@server.com">username@server.com</a>
Предположим, что номер локального порта – 8080 , IP-адрес удаленного сервера – 10.0.2.15, а номер удаленного порта – 80. Выполните следующую команду, чтобы подключиться к серверу с помощью переадресации локального порта. Здесь имя хоста удаленной машины – «andreyex.ru».
$ ssh -L 8080:10.0.2.15:80 <a href="mailto:andreyex@andreyex.ru">andreyex@andreyex.ru</a>
После подключения к удаленному компьютеру пользователь клиентского компьютера сможет получить доступ к любому контенту удаленного компьютера, который был показан здесь. На удаленном компьютере существует текстовый файл с именем log.txt. Теперь запустите следующую команду с клиентского компьютера, чтобы прочитать содержимое файла после входа на удаленный компьютер.
$ cat log.txt
Выполните следующие команды, чтобы выйти из удаленного компьютера.
$ exit
Следующий аналогичный вывод появится после выполнения вышеуказанных команд. В выходных данных отображается содержимое текстового файла с удаленного компьютера и следующий выход из системы с удаленного компьютера.
B. Доступ к локальным ресурсам с серверной машины
К ресурсам локальной машины можно получить доступ с серверной машины, используя удаленную переадресацию портов. Обычно он подключается к серверу SSH, но в этом случае вы должны использовать параметр -R с командой ssh, указав удаленный порт, локальный адрес и локальный порт. Синтаксис переадресации удаленного порта приведен ниже.
ssh -R remote_port:local_address:local_port username@server.com
Предположим, что номер удаленного порта – 22, имя хоста локального сервера – localhost, а номер локального порта – 2345. Выполните следующую команду, чтобы подключиться к серверу путем перенаправления удаленного порта. Здесь имя хоста удаленной машины – «andreyex.ru».
$ ssh -R 22:localhost:2345 <a href="mailto:andreyex@andreyex.ru">andreyex@andreyex.ru</a>
После подключения к удаленной машине пользователь удаленной машины получит доступ к любому контенту с удаленной машины, показанной здесь. Текстовый файл с именем products.txt существует в домашнем каталоге клиентского компьютера. Теперь выполните следующую команду после подключения к удаленному компьютеру, чтобы прочитать содержимое локального файла.
$ cat /home/alex/products.txt Run the following commands to log out from the remote machine. [cc lang="text" width="100%" height="100%" escaped="true" theme="blackboard" nowrap="0"] $ exit
Следующий аналогичный вывод появится после выполнения вышеуказанных команд. Выходные данные показывают содержимое текстового файла с клиентского компьютера и следующий выход из системы с удаленного компьютера.
C. Использование SSH-сервера в качестве прокси-сервера.
Динамическое перенаправление портов в основном используется для доступа к конкретному приложению внутренней сети с помощью прокси-сервера SOCKS. Параметр -D используется с командой ssh для динамической переадресации портов. Синтаксис динамической переадресации портов приведен ниже.
ssh -D local_port username@server.com
Предположим, что номер локального порта – 5050. Выполните следующую команду, чтобы открыть прокси-сервер SOCKS на порту 5050. Теперь пользователь может настроить любой браузер или приложение на использование локального IP-адреса и порта 5050 для перенаправления всего трафика через туннель.
$ ssh -D 5050 <a href="mailto:andreyex@andreyex.ru">andreyex@andreyex.ru</a>
Заключение
В этой статье описаны три различных способа переадресации портов SSH, чтобы помочь читателям понять концепцию туннелирования SSH или переадресации портов.