Linux putty ssh tunnel

Простой SSH туннель с помощью Putty

img

Многие из вас наверняка используют в повседневной работе SSH подключение к удаленным серверам. Но не многие знают, что с помощью SSH мы можем создавать защищенные соединения (туннели), через которые трафик будет передаваться в зашифрованном виде.

В статье мы расскажем о простом способе создания SSH – туннеля и использования его для HTTP/RDP доступа.

Шаг №1: Создание SSH — шлюза

Первое, что необходимо сделать, это создать SSH – шлюз. Для этого, откроем Putty и создадим подключение к шлюзу:

Создание SSH туннеля в Putty

Сохраните сессию, чтобы потом оперативно загрузить ее с помощью кнопки Load.

Шаг №2: Делаем туннель

В левом меню навигации, переходим в раздел ConnectionSSHTunnels. В данном меню настройки укажите параметр Source Port — это порт, к которому вы будете подключаться локально, чтобы отправить трафик через SSH – туннель. В поле Destination укажите адрес назначения, к которому вы будете подключаться:

Настройка SSH туннеля в Putty

Данная запись означает то, что при подключении к локальному порту 37662 (127.0.0.1:37662), вы будете перенаправлены через SSH туннель до SSH – шлюза, а затем уйдете на адрес назначения 11.12.13.14:3389 – то есть RDP.

Помимо этого, мы добавим подключение к WEB по 80 порту. Нажимаем Add:

RDP и HTTP через SSH туннель

Отлично. Теперь в Putty нажимаем Open — туннель готов к использованию.

Шаг №3: Проверяем

Вызываем утилиту подключения к удаленному рабочему столу командой mstsc и указываем требуемые для нас реквизиты подключения – локалхост и созданный ранее RDP порт:

RDP подключение через SSH туннель

В примере, для того, чтобы «гнать» web – трафик через SSH – туннель настройте прокси сервер.

Важно: подключение через SSH – туннель будет активно до тех пор, пока открыта утилита Putty и существует коннекция с SSH – шлюзом.

Источник

Создание SSH-туннелей с помощью PuTTY

В данной статье будет описано как строить SSH–туннели с помощью PuTTY.

1. Локальный проброс порта

Рассмотрим следующую ситуацию. Мы находимся внутри корпоративной сети, у нашего компьютера адрес 192.168.0.2, доступ во внешний мир полностью закрыт (то есть никакого NAT–а, proxy и т.п.). Влиять на политику ограничения доступа у нас возможности нет, но зато есть SSH–доступ на один из серверов с маршрутизируемым IP–адресом, который доступен из Интернета. Внутренний адрес этого сервера, пусть будет для примера 192.168.0.3. Структура сети изображена на рисунке:

PuTTY SSH Tunnels Schema

Предположим, что нам очень нужно подключиться, к примеру, по SSH на некоторый удалённый сервер с IP–адресом 212.212.212.212 где–то далеко в Интернет. Для этого запускаем PuTTY, создаём SSH–подключение к серверу 192.168.0.3 (далее по тексту SSH–сессия 1), идём в пункт Tunnels:

PuTTY SSH Tunnels Config

и указываем, что локальный порт 2222 нашего компьютера должен быть поставлен в соответствие порту 22 на сервере с IP–адресом 212.212.212.212. Далее жмём кнопку «Open», авторизуемся на сервере 192.168.0.3. Затем создаём ещё одно подключение (далее по тексту SSH–сессия 2), но уже на localhost, порт 2222 и жмём кнопку «Open»:

PuTTY SSH Tunnels Connect

В результате SSH–сессия 2 будет туннелироваться (т.е. будет установлена внутри ранее установленной SSH–сессии 1). Для удалённого сервера 212.212.212.212 всё будет выглядеть так, как будто к нему подключается 111.111.111.111:

Читайте также:  Linux on psp vita

PuTTY SSH Tunnels Schema Tunnel

2. Удалённый проброс порта

В этом случае подключение внутри SSH–туннеля устанавливается в другую сторону — от удалённого сервера на наш локальный компьютер. Может быть полезно, если требуется открыть доступ к локальным сервисам нашего компьютера. Рассмотрим ту же сеть, что и в пункте 1, но для простоты предположим, что теперь у нас есть NAT:

PuTTY SSH Tunnels Schema Remote

Здесь уже у нас есть возможность подключаться через SSH напрямую к 212.212.212.212 благодаря наличию NAT–а. А вот 212.212.212.212 подключиться на 192.168.0.2 без специальных ухищрений, понятное дело, не сможет, т.к. 192.168.0.2 не подключён к Интернет непосредственно. Предположим, что пользователю, сидящему под X–ами на 212.212.212.212 нужно через remote desktop попасть на наш компьютер 192.168.0.2. Для этого в SSH–сеансе подключения с 192.168.0.2 на 212.212.212.212 нужно изменить настройки в разделе Tunnels следующим образом:

PuTTY SSH Tunnels Conf

В результате после успешной авторизации на 212.212.212.212 можно увидеть следующее:

#lsof -i -nP | grep 3333 sshd 18598 avz 11u IPv4 592868957 TCP 127.0.0.1:3333 (LISTEN)

То есть sshd ожидает подключений на TCP–порт 3333, которые затем по SSH–туннелю будут перенаправлены на 192.168.0.2 порт 3389. И юзер сидящий за 212.212.212.212 сможет с помощью rdesktop увидеть наш рабочий стол:

PuTTY SSH Tunnels Schema Remote Tunnel

3. Socks–proxy

В этом случае мы можем использовать сервер с SSH–демоном как промежуточный (proxy). Схема сети как в случае #1 (без NAT и штатных прокси):

PuTTY SSH Tunnels Config Socks Schema

Чтобы заставить PuTTY исполнять роль socks–прокси, нужно параметры SSH–сессии с 192.168.0.2 на 192.168.0.3 изменить следующим образом:

PuTTY SSH Tunnels Config Dynamic

В результате после успешной авторизации со стороны клиента можно будет наблюдать следующее:

C:\>netstat -ano | find "1080" TCP 127.0.0.1:1080 0.0.0.0:0 LISTENING 2392 C:\>tasklist | find /i "2392" putty.exe 2392 Console 0 5420 КБ

То есть putty, выполняющийся с PID–ом 2392, начинает слушать порт 1080, ожидая подключений. Далее бёрем любое приложение, умеющее работать с SOCKS–прокси, например Firefox, и указываем ему использовать наш прокси:

PuTTY SSH Tunnels Firefox

Теперь все запросы от браузера будут проходить через сервер 192.168.0.3. В логах веб–сайтов, по которым мы таким образом будем ходить, будет отображаться внешний IP–адрес нашего сервера — 111.111.111.111.

P.S. Из help–файла Putty 0.58:

Question A.10.3: What does «PuTTY» mean?

It’s the name of a popular SSH and Telnet client. Any other meaning is in the eye of the beholder. It’s been rumoured that «PuTTY» is the antonym of «getty», or that it’s the stuff that makes your Windows useful… 🙂

Источник

How to use PuTTY to create a SSH Tunnel

The SSH protocol has a unique feature of tunneling other protocols and encrypting them. This article will show you how to use the popular terminal emulator PuTTY to create a SSH tunnel to pass VNC traffic which is normally unencrypted. This is just an example of tunneling VNC traffic through PuTTY you can tunnel almost any traffic (eg HTTP, FTP) by changing port numbers. First I will show you how this is done through the GUI and then by using command line parameters of PuTTY which are very similar to the “ssh” command in Linux. This article assumes that a VNC server software has already been installed on the target Linux computer and a VNC session has been created.

Creating a SSH Tunnel using PuTTY – GUI

Open PuTTY and enter the IP address/Hostname of the Linux server. Leave the port number to 22 if you did not change the default SSH port number on the Linux Server.

Читайте также:  Linux add string to file

putty ssh server details

From the Category section expand “SSH” and select “Tunnels”, enter both the source port as 5901 (any port number will do) and destination as :5901 eg. 192.168.1.102:5901. I have configured a VNC session on my Linux server with the following command.

vncserver :1 -geometry 1366×768 -depth 24

Hence I will be using port 5901 as the destination. The source port can be any number, I am entering the same number just to avoid confusion.

putty vnc tunnel

Leave all the other radio buttons to their defaults and click the Add button. You will now see the setting under “Forwarded Ports”.

putty port forwarding

Come back to the “Session” page to save these settings as a session so that you do not need to enter them each time. Under “Saved Sessions” specify a name and click the save button.

putty save the configuration

Thats it now click open, enter your credentials. Once logged in minimize the PuTTY window and open your VNC viewer software and enter “localhost:5901” replace 5901 with the port number you entered in the SOURCE PORT field of PuTTY under SSH -> Tunnels.

vnc viewer vnc viewer alert

OMG what is this ? Connection is unencrypted ? But didn’t you follow this whole thing to tunnel your VNC connection over SSH using PuTTY. Worry not my friend this is normal because neither your VNC client software nor your VNC server knows that your traffic is being encrypted because all tunneling and encryption starts AFTER the data leaves the VNC Viewer software and ends BEFORE it hits the VNC server daemon running on your Linux server. That is why you entered “localhost” in the VNC viewer instead of the actual IP address of the Linux machine. So safely click continue, enter your VNC credentials and start using your encrypted VNC connection.

Still not satisfied with my answer let me show you solid proof that the connection is indeed encrypted. First up the following are the IPTables firewall rules present in my Linux machine.

iptables -A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state —state NEW -p tcp —dport 22 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT

Other than RELATED and ESTABLISHED connections the rules allow only SSH, ICMP and Loopback interface traffic even then I was able to use VNC on port 5901. You can also try these firewall rules. Here is how tunneling works.

After PuTTY is configured and a SSH connection established/authenticated, PuTTY will start listening on port 5901 (or the source port you had mentioned in PuTTY) this can be confirmed using the netstat -aon command from the Windows command line.

putty listening on localhost

The last column shows Process IDs 912 is PuTTY and 4132 is VNC Viewer. When you enter “localhost:5901” in the VNC Viewer and click connect the following process happens.

  1. The VNC Viewer initiates a connection on port 5901 localhost.
  2. The PuTTY software listening on the port answers this connection.
  3. PuTTY then transfers all the VNC data through the SSH connection initiated from the client to the server.
  4. The SSH daemon running on the target Linux machine forwards this data to the IP address and port number entered in the “Destination field” field of PuTTY.
  5. This traffic passes through the loopback interface (it is matched by rule number 4 from the firewall rules mentioned above) and is answered by the VNC Server daemon.
Читайте также:  Проверить загруженность cpu linux

You can use the following tcpdump command to see the movement of traffic.

All packets will contain the same IP address in both the source and destination field and that is the IP address of the VNC server. Try running the tcpdump command with the same filter but a different interface like eth0 you will not get a single packet.

Creating a SSH Tunnel using PuTTY – Command-line

Now lets do the same thing through the command-line. It’s very simpla all you have to do is go to Run -> cmd navigate to the place where putty.exe is located and enter the following.

C:\Users\A.Jesin\Desktop>putty.exe -ssh jesin@192.168.1.102 -L 5901:192.168.1.102:5901

Optionally you can add a “-N” in the end of the command which is similar to the “Don’t start a shell or command at all” option available in the GUI of PuTTY under Connection -> SSH. If you use this option you create a SSH tunnel by logging in as a user who has “nologin” shell.

Источник

SSH Tunneling with Putty | Linux

SSH tunneling or also known as port forwarding is a way of forwarding normally insecure TCP traffic through SSH. Common ports for example POP3,SMTP,HTTP and FTP can be easily tunneled using SSH.

SSH tunneling is also sometimes used to bypass firewalls where certain ports are blocked.

The figure below represents the network setup at my workplace where the only port available to use is SSH port 22. By implementing portwarding over ssh I am able to port forward Oracle traffic over port 22 to my Oracle DB database running on my private VM with host only networking enabled.

SSH Tunneling

In this post I will show you how to apply SSH tunneling using the windows SSH client Putty. I’ll cover the Linux implementation in my future post.

You will need Putty to get started. Putty is a popular free win32 based SSH/Telnet client. Obtain the latest version 0.59 at the homepage.

Run Putty, key in the address for your Linux box. In this example “10.99.34.6” “Pandora” is the Linux box hosting VM and on the VM “192.168.66.100” the is an Oracle database running on RHEL 3. The VM is setup with host only networking so it has no access beyond the host machine “Pandora”.

putty1.png

Look for the SSH tree entry in the menu to the left. Expand it and go to “Tunnels”.

putty2.png

Fill the the required information and click add.

Source Port: 1521
Destination: 192.168.66.100:1521

“Source port” is the port Putty will listen on for incoming connections.
“Destination” is the destination port we are trying to access. In this example the Oracle listener is listening on port 1521 for incoming traffic so we use that.
“1521” is the standard Oracle listener port.

putty3.png

Remember to save the session in the session page.

Open Putty and login to the Linux box “Pandora” and port forwarding should be up.

Источник

Оцените статью
Adblock
detector