- Создание SSH-туннелей с помощью PuTTY
- 1. Локальный проброс порта
- 2. Удалённый проброс порта
- 3. Socks–proxy
- PuTTY: Telnet/SSH Клиент
- Новости PuTTY
- 21.12.2019 — Русская версия PuTTY 0.73-RU-17
- 29.09.2019 — Релиз PuTTY 0.73
- 20.07.2019 — Релиз PuTTY 0.72
- Подключение к серверу через Putty: примеры использования
- Применение и возможности PuTTY
- Возможности программы
- Установка на Windows
- Работа с программой
- Интерфейс
- Соединение с удаленным сервером
- Использование SSH-ключей
- Шаг №1
- Шаг №2
- Шаг №3
- Работа с файлами
- Распространенные ошибки
- Проблемы с аутентификацией
- Причины ошибки
- Как решить
- Ошибка подключения
- Причины ошибки
- Как решить
Создание SSH-туннелей с помощью PuTTY
В данной статье будет описано как строить SSH–туннели с помощью PuTTY.
1. Локальный проброс порта
Рассмотрим следующую ситуацию. Мы находимся внутри корпоративной сети, у нашего компьютера адрес 192.168.0.2, доступ во внешний мир полностью закрыт (то есть никакого NAT–а, proxy и т.п.). Влиять на политику ограничения доступа у нас возможности нет, но зато есть SSH–доступ на один из серверов с маршрутизируемым IP–адресом, который доступен из Интернета. Внутренний адрес этого сервера, пусть будет для примера 192.168.0.3. Структура сети изображена на рисунке:
Предположим, что нам очень нужно подключиться, к примеру, по SSH на некоторый удалённый сервер с IP–адресом 212.212.212.212 где–то далеко в Интернет. Для этого запускаем PuTTY, создаём SSH–подключение к серверу 192.168.0.3 (далее по тексту SSH–сессия 1), идём в пункт Tunnels:
и указываем, что локальный порт 2222 нашего компьютера должен быть поставлен в соответствие порту 22 на сервере с IP–адресом 212.212.212.212. Далее жмём кнопку «Open», авторизуемся на сервере 192.168.0.3. Затем создаём ещё одно подключение (далее по тексту SSH–сессия 2), но уже на localhost, порт 2222 и жмём кнопку «Open»:
В результате SSH–сессия 2 будет туннелироваться (т.е. будет установлена внутри ранее установленной SSH–сессии 1). Для удалённого сервера 212.212.212.212 всё будет выглядеть так, как будто к нему подключается 111.111.111.111:
2. Удалённый проброс порта
В этом случае подключение внутри SSH–туннеля устанавливается в другую сторону — от удалённого сервера на наш локальный компьютер. Может быть полезно, если требуется открыть доступ к локальным сервисам нашего компьютера. Рассмотрим ту же сеть, что и в пункте 1, но для простоты предположим, что теперь у нас есть NAT:
Здесь уже у нас есть возможность подключаться через 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 следующим образом:
В результате после успешной авторизации на 212.212.212.212 можно увидеть следующее:
То есть sshd ожидает подключений на TCP–порт 3333, которые затем по SSH–туннелю будут перенаправлены на 192.168.0.2 порт 3389. И юзер сидящий за 212.212.212.212 сможет с помощью rdesktop увидеть наш рабочий стол:
3. Socks–proxy
В этом случае мы можем использовать сервер с SSH–демоном как промежуточный (proxy). Схема сети как в случае #1 (без NAT и штатных прокси):
Чтобы заставить PuTTY исполнять роль socks–прокси, нужно параметры SSH–сессии с 192.168.0.2 на 192.168.0.3 изменить следующим образом:
В результате после успешной авторизации со стороны клиента можно будет наблюдать следующее:
То есть putty, выполняющийся с PID–ом 2392, начинает слушать порт 1080, ожидая подключений. Далее бёрем любое приложение, умеющее работать с SOCKS–прокси, например 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… 🙂
PuTTY: Telnet/SSH Клиент
PuTTY — клиентская программа для работы с сетевыми протоколами Telnet, SSH, SCP, SFTP, для подключения по COM-порту и ZModem, утилита для генерации RSA, DSA, ECDSA, Ed25519 цифровых SSH-ключей.
PuTTY является свободным приложением с открытым исходным кодом, содержит реализацию сетевых протоколов SSH, Telnet, Rlogin, и распространяется под Open Source лицензией MIT.
Пакет PuTTY включает в себя несколько приложений:
- PuTTY: Telnet и SSH клиент
- PSCP: SCP клиент — копирование файлов по шифрованному протоколу с управлением из командной строки
- PSFTP: SFTP клиент — копирование файлов по SSH, подобно FTP
- PuTTYtel: отдельный Telnet клиент
- Plink: интерфейс командной строки к PuTTY
- Pageant: агент SSH-аутентификации для PuTTY, PSCP и Plink
- PuTTYgen: утилита для генерации SSH-ключей
Вы можете скачать и установить, как полный инсталлятор, так и каждый модуль по отдельности. На странице загрузки PuTTY представлены бинарные файлы под Windows, и исходные коды, в том числе и под Linux/Unix. Помимо официальных релизов и поддерживаемых ОС, существуют аддоны и модификации PuTTY, созданные сторонними разработчиками. А кроме основной документации, рекомендуем ознакомиться с особенностями русской версии PuTTY, часто задаваемыми вопросами FAQ, со статьями, прямо или косвенно связанными с работой PuTTY, SSH, и работе с Linux в целом, а также каталогом цветовых схем PuTTY.
Новости PuTTY
21.12.2019 — Русская версия PuTTY 0.73-RU-17
- Переход на версию PuTTY 0.73.
- Временно деактивированы патчи, некорректно работающие с последними версиями PuTTY: Cygterm, Background Image, Wincrypt.
- Другие исправления ошибок и незначительные багфиксы.
29.09.2019 — Релиз PuTTY 0.73
- В Windows другие приложения могли привязываться к тому же TCP-порту, что и локальный port-forwarding порт PuTTY (см. vuln-win-exclusiveaddruse).
- Исправлена ошибка при обработке терминалом режима xterm bracketed paste mode, из-за которой две escape-последовательности, заключенные в скобки, могли появляться вместе, что позволяло ошибочно идентифицировать вставленные данные как ручной ввод с клавиатуры (см. vuln-bracketed-paste-data-outside-brackets).
- Сервер SSH-1, отправляющий сообщение об отключении, мог вызвать доступ к освобожденной памяти (см. ssh1-disconnect-use-after-free).
- Plink под Windows падал при старте, если он действовал как connection-sharing downstream.
- Теперь PuTTY под Windows корректно обновляет размер окна терминала, если разрешение экрана было изменено, а окно PuTTY в этот момент было развернуто на весь экран.
- Исправлена ошибка, приводившая к потере символов в конце строк при обработке терминалом цветных сообщений GCC.
- Исправлено плохое взаимодействие между операцией «Очистить прокрутку», и выделением мыши, которое могло приводить к появлению сообщений об ошибках.
20.07.2019 — Релиз PuTTY 0.72
Исправления безопасности, найденные в рамках финансируемой EU-FOSSA программы Bug Bounty:
- Целочисленное переполнение при разборе длины пакета SSH-1 (см. vuln-ssh1-buffer-length-underflow).
- Переполнение буфера в SSH-1, если сервер отправляет два крошечных ключа RSA (см. vuln-ssh1-short-rsa-keys).
- Клиентский код Pageant под Windows не проверял поле длины ответа, что могло привести к уязвимости во всех инструментах SSH-клиента (PuTTY, Plink, PSFTP и PSCP), если вредоносная программа могла выдать себя за Pageant (см. vuln-win-pageant-client-missing-length-check).
- Исправлен сбой при обмене ключами GSSAPI/Kerberos, затрагивающий сторонних поставщиков GSSAPI под Windows (например, MIT Kerberos для Windows).
- Исправлен сбой при обмене ключами GSSAPI/Kerberos, происходивший если сервер предоставил обычных ключ хоста SSH как часть обмена.
- Символы доверия («trust sigils» — значки PuTTY в начале локально сгенерированных строк в окне терминал — чтобы отличить их от данных, отправляемых сервером) никогда не отключались в SSH-1 или Rlogin.
- Символы доверия никогда не включались снова, если пользователь инициировал перезапуск сеанса.
- PSCP в режиме загрузки SCP мог создавать файлы с ложной новой строкой в конце их имени.
- PSCP в режиме загрузки SCP с опцией -p генерировал ложные сообщения о несанкционированном переименовании файлов.
- Начальное сообщение с инструкцией никогда не выводилось во время SSH keyboard-interactive аутентификации.
- Вставка очень длинных строк во время совместного использования SSH-соединений могло вызвать падение downstream-окна PuTTY.
- В раскладках клавиатуры с клавишей «,» на цифровой клавиатуре (например, немецкая) PuTTY под Windows могла вернуть «.» вместо «,».
- PuTTYgen мог сгенерировать RSA-ключ на один бит короче, чем было запрошено.
Подключение к серверу через Putty: примеры использования
Содержание
Применение и возможности PuTTY
PuTTY — программа, которая позволяет установить соединение с удаленным сервером или компьютером. Программу можно также применять для реализации следующих целей:
- удаленного администрирования;
- взаимодействия с VPS -серверами.
- работы с Telnet-терминалами;
- настройки маршрутизаторов через RS-232;
Работать рекомендуется через SSH, поскольку он обеспечивает высокий уровень безопасности соединения с другим компьютером. PuTTY поддерживает Telnet, реализующий текстовый интерфейс в терминале (только для отображения текстовой информации в режиме консоли).
Возможности программы
- Сохранение информации и конфигурационных параметров для многократного применения.
- Работа с SSH-ключами.
- Поддержка разных версий SSH-протокола.
- Встроенные клиенты SCP и SFTP, используемые для различных операций с файлами. Возможности первого ограничиваются только функцией копирования.
- Перенаправление портов через протокол SSH.
- Поддержка xterm, ECMA-48 и VT-102.
- Возможность соединения по IPv6.
- Работа с алгоритмами шифрования.
- Аутентификация через ключ, который расположен на удаленной машине.
- Соединение через proxy.
- Использование порта RS-232.
Установка на Windows
- Программа PuTTY для Windows 10 скачивается с официального сайта .
- Далее нужно перейти по ссылке, скачать пакет для архитектуры x86 или x64, а затем запустить установку.
- После установки необходимо проверить программу на работоспособность, запустив исполняемый файл на Windows.
Работа с программой
Интерфейс
Пользоваться программой PuTTY удобно, т. к. она имеет понятный интерфейс. Чтобы ее настроить , нужно знать назначение основных ее вкладок.
- Session позволяет задать параметры соединения, чтобы подключиться к серверу (IP-адрес, протокол и порт), а также сохранить настройки для многократного использования.
- Terminal : режим активации или деактивации терминала.
- Window : установка кодировки и изменение интерфейса.
- Connection отвечает за выбор шифрования, аутентификацию без ввода пароля и т. д.
Соединение с удаленным сервером
Принцип подключения не зависит от операционной системы. Это могут быть разные версии Windows (7, 10) или популярные дистрибутивы на основе Linux — Ubuntu, CentOS, Debian.
Подключиться по SSH через PuTTY просто. Для этого нужно следовать приведенной ниже инструкции.
- Ввести IP-адрес или имя хоста, к которому необходимо подключиться.
- Указать порт (по умолчанию везде 22).
- Выбрать тип соединения SSH.
- Ввести название подключения и сохранить его, нажав кнопку «Save».
- Активировать соединение, нажав на «Open».
- Указать данные для авторизации (логин и пароль).
После этого работа с терминалом осуществляется, как на локальном компьютере. Чтобы узнать информацию о версии Ubuntu, нужно ввести команду:
Для удобства можно создать жесткую ссылку (ярлык) на программу для быстрого запуска.
Использование SSH-ключей
Чтобы постоянно не вводить данные авторизации для соединения с удаленным сервером, нужно установить ключ SSH -типа.
Для примера, продемонстрируем ниже, как подключиться через PuTTY , установленного в Windows 10, при помощи SSH-ключа к серверу на Ubuntu.
Шаг №1
Для начала, нужно выполнить ряд действий на компьютере с ОС Windows.
- Установить программу для генерации ключа « Putty Key Generator » и запустить ее.
- Задать параметр « RSA » и активировать процесс кнопкой « Generate ». Нужно постоянно вводить указателем мыши в зоне окна выполнения операции для успешной генерации.
- Сохранить private key , для чего скопировать текст из консоли в документ . Предварительно нужно указать тип файла «.ppk ».
- Затем сохраняем public key. Для этого необходимо скопировать и вставить текст из буфера обмена в любой пустой текстовый файл.
- Свернуть программу.
Шаг №2
Далее необходимо перенести SSH-ключ на сервер Ubuntu, выполнив перечисленные ниже действия.
- Запустить программу PuTTY.
- Подключиться к серверу, используя его параметры для доступа (хост, порт и SSH-протокол).
- Командой « mkdir .ssh » создаем папку «.ssh». Затем командой « ll » проверяем наличие папки.
- Прописываем права доступа для папки .ssh только для владельца, командой « сhmod 700 .ssh/ ».
- При помощи команды « cd .ssh » переходим в системную папку « ./ssh ».
- Создаем файл « authorized_keys », используя редактор nano, командой:
Прописываем права доступа для файла « authorized_keys », только для владельца, командой:
Редактируем файл с помощью команды:
Шаг №3
Возвращаемся к программе PuTTY на Windows 10.
- Переходим в программу.
- Добавляем данные для подключения.
- Переходим во вкладку «Connection → SSH → Auth». Выбираем для аутентификации сохраненный файл «.ppk».
- Активируем соединение при помощи нажатия « Open ».
Работа с файлами
Программа позволяет делать операции с файлами. Чтобы закачать файл на сервер , находящийся под управлением Linux Ubuntu (с компьютера на ОС Windows), нужно действовать по приведенной ниже инструкции.
- Сохранить тестовый файл « mydoc.txt » на диске C:\ вместе с исполняемым файлом для безопасного копирования — pscp.exe.
- Открыть командную строку Windows: « Win+R → cmd → Enter ».
- Зайти в папку с программой pscp.exe, для чего ввести команду : « cd /d c:\Putty\pscp.exe » * , где « c:\Putty\ » — путь к файлу pscp.exe.
* Путь к файлу «c:\Putty\pscp.exe» приведен в качестве примера. - Далее можно приступать непосредственно к работе с файлом. Например, п ередать файл « mydoc.txt » на сервер « 192.241.7.16 » * со стандартным портом и пользователем Ubuntu74 в папку « root » можно командой:
* IP-адрес «192.241.7.16» приведен только в качестве примера.
Если для соединения используется нестандартный порт (например, 25), то команда примет вид:
Скачать файл через PuTTY с сервера « 192.241.7.16 » в текущую папку можно с помощью команды:
Чтобы объединить файлы , нужно их загрузить на удаленную машину, а затем выполнить команду « sudo cat mydoc1.txt mydoc2.txt > mydoc.txt ».
Распространенные ошибки
Проблемы с аутентификацией
PuTTY выдает при подключении сообщение: « Access denied». Это указывает на отказ в доступе, причиной которого являются ошибки при вводе логина или пароля.
Если соединение с удаленным сервером происходит при помощи SSH-ключа, то PuTTY выдаст в диалоговом окне такие строки:
Причины ошибки
Ошибка « Access denied » связана с некорректной аутентификацией на основе ключей. Вызвать ее может отсутствие соответствующих прав доступа к файлам или невозможность подтвердить права владельца.
Как решить
- Проверить параметры аутентификации (логин и пароль).
- Проверить наличие и правильность имени SSH-ключа в PuTTY.
- Выполнить проверку содержимого кода SSH-ключа в « authorized_keys ».
Если ни один из вариантов не дал положительного результата, то нужно воспользоваться альтернативным графическим клиентом WinSCP . С его помощью нужно реализовать описанную ниже последовательность действий.
- Перейти в папку « /etc/ssh/ », а затем открыть файл « sshd_config ».
- Далее необходимо найти строки « PasswordAuthentication: YES » и « PermiRootLogin: NO ». Значения переменных требуется поменять на противоположные значения, т. е. « PasswordAuthentication: NO » и « PermiRootLogin: YES ».
- После сохранения изменений необходимо перезапустить PuTTY и соединиться с удаленным сервером.
Подробнее о том, как создать удаленное соединение для разных дистрибутивов Linux, можно узнать из отдельных руководств:
Ошибка подключения
Если программа PuTTY выдает ошибку « Unable to open connection to mysite.ru Host does not exist » * , то это свидетельствует о том, что ссылка на SSH-хост не соответствует сетевому адресу.
* Домен mysite.ru приведён для примера.
При истекшем времени подключения или отказе в соединении PuTTY выдаст сообщения « Network error: Connection timed out » и « Network error: Connection refused » соответственно.
Причины ошибки
- Отсутствие сетевого подключения.
- Неверно указан IP-адрес.
- Порт не поддерживается или его значение задано неверно.
- Блокировка исходящего подключения антивирусом или брандмауэром.
Как решить
Чтобы исправить ошибку , рекомендуется действовать по приведенной ниже инструкции.
- Проверить IP-адрес хоста.
- Убедиться, что порт не блокируется какой-либо программой. При необходимости внести его в список исключений.
- Проверить конфигурацию PuTTY во вкладках « Session » и « Connection ».
- В список исключений антивируса или брандмауэра необходимо внести стандартный порт 22.
Начни экономить на хостинге сейчас — 14 дней бесплатно!