Клиент SSH — это необходимая утилита при использовании SSH-соединения между двумя машинами. Она предназначена для входа в операционную систему удаленного компьютера и выполнения в ней команд. Клиент устанавливается на локальную машину пользователя. Он должен пройти аутентификацию на сервере, и только после этого начинается обслуживание. Клиент может быть реализован для работы в терминале или иметь графический интерфейс настройки.
Что такое SSH?
SSH (Secure Shell) переводится дословно как «безопасная оболочка». В использовании SSH — это сетевой протокол, с помощью которого производится безопасное управление операционной системой удаленного узла в сети. Обеспечивает защищенное соединение, аутентификацию и передачу данных с одного хоста на другой благодаря шифрованию трафика, проходящего через него.
Он позволяет создавать шифрованные туннели для безопасной передачи других сетевых протоколов через незащищенную сеть, например, Интернет. Часто его используют для перенаправления портов одного компьютера на порты другого.
Начало SSH было положено Тату Илёненом из Финляндии в 1995 году, который задействовал его как более конфиденциальный протокол. Эта версия была названа SSH-1. На данный момент практически нигде не используется.
В 1996 году была разработана усовершенствованная версия SSH-2. Она несовместима с SSH-1, более защищенная и имеет расширенный список алгоритмов шифрования. Сейчас под SSH понимается именно версия SSH-2. С 2006 года протокол признан интернет-стандартом ассоциацией IETF.
Существует две основных реализации SSH. Одна из них проприетарная, которая разрабатывается SSH Communications Security. Вторая - OpenSSH, созданная под руководством Тео де Раадта как свободная открытая альтернатива первой. Является самой распространенной и включена в поставку большинства Unix-подобных систем.
Что такое клиент SSH и сервер SSH
Подключение по протоколу SSH реализуется с помощью двух основных компонентов: клиента и сервера.
Простыми словами, пользователь через клиент, который установлен на локальный компьютер, получает доступ к удаленной машине (серверу). Стоит отметить, что клиент может быть реализован с графической оболочкой (как дестктопное приложение), так и для работы в терминале (консоли).
Сервер SSH слушает сетевые подключения клиентов и при получении запроса на коннект производит необходимые действия для авторизации. При удачном прохождении запускает установленную для удаленного клиента службу.
Безопасный доступ организуется с помощью процедуры аутентификации с использованием асимметричного шифрования с публичным ключом при первом подключении. При последующем применяется симметричное шифрование.
Стандарт SSH включает в себя три протокола:
- Протокол транспортного уровня - гарантирует аутентификацию сервера, секретность и целостность. Обеспечивает сжатие данных. Работает поверх TCP/IP.
- Протокол аутентификации — исполняет аутентификацию клиента для сервера. Действует поверх уровня транспортного протокола.
- Протокол соединения — представляет зашифрованный канал в виде мультиплексированного канала из нескольких логических, используемых для разных служб. Работает поверх канала аутентификации.
Повышение безопасности гарантируется аутентификацией клиента для сервера, к которому обращается клиент ssh и аутентификацией сервера клиентом. Происходит аутентификация обеих сторон.
Клиент шлет запрос в первый раз, когда устанавливается безопасное соединение транспортного уровня. Второй запрос направляется после завершения аутентификации SSH-клиента.
Реализация OpenSSH
OpenSSH — это открытая реализация команды OpenBSD. Является самой распространенной версией благодаря свободному распространению.
Видео: Best SSH Clients for Windows
Пакет OpenSSH включает набор таких инструментов:
- SSHD — серверная часть.
- SSH — клиентская часть.
- SCP — утилита для защищенного копирования файлов.
- SSH-keygen — генерирует открытые ключи (RSA, DSA и другие) для компьютеров и пользователей.
- SSH-keyscan — собирает публичные ключи в сети.
- SSH-agent — хранит личные RSA ключи для последующей авторизации с публичными ключами.
- SSH-add — добавляет новые личные ключи агенту SSH-agent.
- SFTP-server — SFTP сервер.
- SFTP — утилита для безопасного копирования файлов по FTP.
OpenSSH включен в поставку из коробки для большинства Unix-подобных систем. Самые распространенными считаются Linux, Open (Free, Net) BSD, Solaris, HP-UX, Irix, MacOS X и другие.
Активная разработка ведется в реализации OpenSSH for Windows, которая доступна для скачивания насайте. Она позволяет создавать SSH-сервер в системах семейства Windows, имеет клиент SSH для подключения. OpenSSH for Windows включен в поставку CygWin.
Наиболее популярными среди пользователей являются дистрибутивы на базе ядра Linux. В дальнейшем все примеры использования SSH будут подразумеваться в настройке OpenSSH. Для наглядности работы в Linux будет настроен SSH-клиент для Ubuntu, Windows и Mac OS X.
Установка и настройка openssh-server
Существует множество вариантов конфигурации OpenSSH -server. Настройка клиента должна производиться исходя из конфига сервера. В этом разделе приведен пример сервера SSH, установленного на Ubuntu Server Edition. При последующих описаниях настройки клиентов будет использоваться конфигурация этого сервера.
1. Есть два способа установки OpenSSH -server:
1.1. Выбрать установку пакета OpenSSH -server сразу же в процессе разворачивания Ubuntu Server/
1.2. Скачать и установить из репозитория, выполнив команду:
2. Ознакомиться со значениями конфигурация сервера SSHD по умолчанию в файле /etc/ssh/sshd_config можно командой:
3. Перед изменением стандартных настроек обязательно нужно создать резервную копию файла и защитить его от записи. Это делается на тот случай, если потребуется откат до значения по умолчанию в случае ошибки.
4. В настройках по умолчанию установлен порт TCP 22. Для безопасности рекомендуется заменять его нестандартным значением, например, 5754. Изменить директиву Port можно командой:
5. Сохраните файл/etc/ssh/sshd_config и перезапустите SSHD:
Сервер установлен и настроен. Теперь он прослушивает порт 5754. По умолчанию получить доступ может любой пользователь системы с правами на вход. Аутентификация производится с помощью пароля или ключей DSA, RSA, ed25519 и др.
Кросплатформенный OpenSSH-client для терминала. SSH клиент для Linux
Ранее говорилось, что самой часто используемой реализацией протокола SSH является OpenSSH, который по умолчанию поставляется с большинством сборок дистрибутивов Linux. В некоторых случаях OpenSSH можно скачать с репозиториев для данного дистрибутива.
Видео: Setup Tower (or any other Git Client) with Amazon CodeCommit via SSH
В составе пакетов OpenSSH-клиент реализован в виде программы SSH, которая запускается одноименной командой. Настройка и управление клиентом производится через терминал, он не имеет графического интерфейса. Считается самой простой и удобной версией.
Установка и настройка OpenSSH-client на Ubuntu
На удаленной машине имеется установленный и сконфигурированный OpenSSH-server. Задача состоит в том, чтобы получить к нему доступ с локального компьютера, на котором установлена Ubuntu.
1. В Ubuntu по умолчанию не добавлен дистрибутив OpenSSH-client, поэтому установить его необходимо командой:
2. После установки программы она вызывается командой SSH из терминала без Root.
3. В случае если используется аутентификация пользователей по паролю:
1) подключение производится командой:
- username — имя учетной записи на удаленной машине,
- host — это IP-адрес удаленного сервера (или домен, если домен был делегирован на сервер);
2) после ввода команды необходимо нажать Enter – появится запрос на ввод пароля- требуется ввести пароль от учетной записи удаленной машины (следует быть внимательным, так как для безопасности ввод пароля никак не отображается)-
3) после правильного ввода пароля появляется окно терминала удаленного сервера с приветствием- теперь можно выполнять необходимые команды.
4. В случае если необходима авторизация по ключам DSA:
1) при необходимости сгенерировать открытый и закрытый ключи SSH можно из OpenSSH-client:
2) по умолчанию публичный ключ сохраняется в файл /home/user/.ssh/id_dsa.pub, а закрытый в /home/user/.ssh/id_dsa-
3) сгенерированный публичный ключ необходимо скопировать на удаленную машину и добавить его к авторизации /home/user/.ssh/authorized_keys командой:
Теперь пользователь может идентифицироваться на SSH-сервере без ввода пароля.
Установка и настройка OpenSSH для Cygwin Terminal на Windows
Установка Cygwin производится запуском файла Cygwin.exe, который скачивается с официального сайта.
Cygwin — это сборка множества разных пакетов. Для работы с удаленным терминалом требуется только OpenSSH. Найти его можно с помощью поиска в самом Cygwin.
После установки пакета нужно запустить Cygwin Terminal и ввести команду:
После чего нажать Enter. Появится запрос на ввод пароля. После прохождения аутентификации появляется терминал удаленного сервера с приветствием пользователя.
Синтаксис точно такой же, как и в OpenSSH-client, реализованном для Linux.
Кроссплатформенный SSH-клиент с графическим интерфейсом PuTTY
Putty — графический клиент SSH для удаленного администрирования, включающий в себя поддержку протокола SSH. Программа распространяется с открытым кодом и абсолютно бесплатная.
Изначально выпускался только для OS Windows, но позже клиент был портирован для Linux, входит в репозитории практически всех популярных дистрибутивов.
Активно разрабатывается для работы в Mac OS X.
Окно настройки PuTTY выглядит одинаково во всех операционных системах. Разница существует только в способах установки. Поэтому сначала будут приведены способы установки для трех операционных систем, а затем - параметры настройки PuTTY.
Установка PuTTY Linux Ubuntu
1. Установить PuTTY можно командой:
2. Запуск выполняется командой putty из терминала или кликом мыши из меню:
3. Открывается окно настроек клиента, где необходимо прописать параметры соединения.
Установка PuTTY для Windows
Для установки потребуется скачать файл putty.exe, сохранить в удобное место, например, на рабочий стол. Программа запускается двумя кликами левой кнопки мыши.
PuTTY — SSH-клиент для Mac. Установка и запуск GUI-версии
На момент написания статьи PuTTY не был адекватно портирован для работы в Mac OS X. Проблемы возникали на компиляции той части, которая отвечает за графический интерфейс.
Для установки следует выполнить некоторые предварительные работы.
1. Установить Xcode.
Пакет утилит и программы от Apple для разработки и сборки приложений под Mac OS X.
С версии Mac OS X 10.7 Lion необходимо поставить «Command Line Tools for Xcode» с сайта Apple Developer.
После установки требуется принять соглашение о лицензии:
2. Установить Xquartz.
Это реализация сервера X.Org X Window System (X11) для Mac OS X. Требуется для GUI-версии PuTTY, написанного на GTK+. Установить можно с официального сайта. После установки потребуется релогин.
3. Установить Homebrew.
Установка производится командой:
Далее нужно выполнить проверку на корректность установки командой:
4. Установка Putty выполняется командой:
Процесс может занять больше получаса, так как будет установлено множество зависимостей вроде Glib/GTK+/Pango/Cairo.
5. Создание файла запуска Putty.app.
Необходимо запустить Automator.app. В типе документа выбрать «программа», в действиях нужно выбрать «запустить shell-скрипт», в поле ввода прописать путь до исполняемого файла «/user/local/bin/putty», сохранить как «putty.app», указав формат файла «программа», в директорию «программы». При желании стандартную иконку можно заменить.
Настройка SSH клиента PuTTY
Процесс настройки графического клиента SSH PuTTY выглядит одинаково во всех операционных системах. Внешний вид слегка отличается в зависимости от оформления рабочего окружения.
Для подключения к удаленной машине по SSH требуется запустить PuTTY. В появившемся окне программы необходимо установить параметры:
Connection Type — тип соединения — устанавливается SSH.
Host Name (or IP-adress) — имя хоста, или IP-адрес — здесь указывается IP-адрес удаленного сервера, доменное имя или адрес в интернете. В приведенном примере указан IP-адрес 192.168.128.3
Port — прослушиваемый порт — на сервере, который был приведен в качестве примера, настроен порт 5754. Его и указываем.
При желании можно сохранить настройки этой сессии.
При нажатии кнопки "Open" появится окно терминала, где потребуется ввести имя учетной записи удаленной машины и пароль.
В случае необходимости аутентификации клиента парой ключей потребуется утилита puttygen.exe, которая запускается в ОС Windows. PuTTY-Gen генерирует свою пару ключей public и private.
Публичный ключ необходимо добавить на сервер, он генерируется в стандарте SSH. Добавить ключ можно аналогично, через OpenSSH в терминале или с помощью PuTTY, пройдя первую авторизацию логин-пароль.
Приватный ключ генерируется формата .ppk и добавляется в клиент. Слева в дереве нужно найти SSH, развернуть список, найти Auth и в этом параметре в поле «Private key file for Authentication» выбрать ключ.
После этих манипуляций пользователь может проходить аутентификацию на сервере без ввода пароля.
На данный момент PuTTY считается универсальным клиентом SSH с графическим интерфейсом. Сторонние разработчики Gao-Feng создали SSH-клиент для Android, как мобильную версию PuTTY.
Лучший SSH-клиент
До сих пор не существует единого мнения о том, какой SSH-клиент лучше использовать. Системные администраторы подбирают утилиты исходя из собственных потребностей.
Как правило, пользователи *Unix-систем склоняются к использованию стандартного SSH из пакета OpenSSH. Он обладает понятным универсальным синтаксисом и доступен напрямую из терминала. Для работы с дополнительными инструментами вроде защищенного копирования файлов (SCP) не требуется устанавливать дополнительные программы. Все необходимое включено в OpenSSH.
Поклонники графического интерфейса, которые обычно работают в операционных системах Windows, используют PuTTY. Считается, что это лучший SSH-клиент для Windows. Он имеет весь необходимый набор инструментов для туннелирования, копирования файлов и так далее, пусть для этого потребуется скачивание дополнительных модулей.