Ssh что это windows

Обновлено: 04.07.2024

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

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

  • Безопасные команды доступа к хосту. SSH дает возможность выполнять безопасные команды доступа к хосту, такие как ssh (удаленная оболочка), slogin (удаленный вход в систему), scp (удаленное копирование);
  • X11 Forwarding. SSH предоставляет встроенный механизм для выполнения удаленных клиентов X Window.
  • Port forwarding. SSH может выполнять переадресацию портов, передавая трафик c одного порта одной машины на другой порт другой машины. При этом передаваемый трафик шифруется;

Безопасность протокола достигается использованием нескольких решений, которые сводят к минимуму риск использования соединения:

  • Шифрование соединение, которое может выполняться одним из методов, выбранных в процессе переговоров. Шифрованное соединение не позволяет просто перехватить и использовать трафик. Выбор алгоритма шифрования делает систему более гибкой, позволяя не использовать алгоритмы, в которых обнаружены слабые места или которые не может поддерживать одна из сторон;
  • Аутентификация сервера выполняется при любом соединении. Это не позволяет выполнить подмену сервера или подмену трафика;
  • Аутентификация клиента может выполняться одним из нескольких доступных способов. Это с одной стороны может повысить надежность аутентификации, с другой -- делает систему более гибкой и упрощает ее использование;
  • Проверка целостности пакетов позволяет отследить любые незаконные изменения в трафике соединения. При обнаружении таких изменений, соединение немедленно разрывается;
  • Временные параметры аутентификации не позволяют воспользоваться данными соединения в том, случае, если спустя некоторое время после перехвата оно все-таки было расшифровано. Устаревание обычно происходит через час;

Аутентификация сервера по протоколу SSH выполняется при помощи инфраструктуры открытых ключей. Открытый ключ сервера клиент получает при первом соединении с ним.

ssh защищает от

  • Подмены IP-адресов (IP-spoofing), когда удаленный хост посылает пакеты от имени другого хоста;
  • Подмены DNS-записей (DNS-spoofing), когда изменяется запись на сервере DNS и в результате соединение устанавливается не с желаемым хостом, а с тем, на который указывает новая запись;
  • Перехвата открытых паролей и прочих данных, которые передаются в открытом виде и любой, кто имеет физический доступ к каналу, может их узнать.

Методы аутентификации клиентов, которые использует SSH:

  • Host-based аутентификация
  • Аутентификация с помощью открытых ключей
  • Kerberos-аутентификация
  • Парольная аутентификация.

По хостам. Метод аналогичный используемому в r-командах. В том случае, если соединение устанавливается с привилегированного порта, и файл .rhosts позволяет вход в систему, он разрешается. Этот метод является потенциально небезопасным, рекомендуется не использовать его. Для повышения уровня своей безопасности метод может быть дополнен RSA-аутентификацией клиентского хоста.

Открытый ключ. Клиент отправляет серверу открытый ключ. Если сервер знает его, он просит клиента доказать, что тот знает и секретный ключ тоже. Если клиент может это доказать, значит аутентификация считается успешной.

Керберос. Аутентификация проводится по схеме v5 Kerberos.

Пароль. В самом крайнем случае, если не удалось провести аутентификацию не одним из перечисленных способов, используется традиционная аутентификация при помощи пароля. Принцип аутентификации аналогичен тому, какой, например, используется в Telnet с той разницей, что пароль передается по зашифрованному каналу.

Как и в любом сетевом взаимодействии, в SSH-соединении участвуют две стороны: клиент и сервер. Сервер SSH реализован в виде программы sshd.

Сервер sshd является независимой программой, поэтому его запуск нужно производить во время загрузки компьютера стартовыми скриптами. То есть, вызов sshd либо должен осуществляться явно одним из rc-скриптов, либо ссылки на скрипт запуска следует включить в иерархию /etc/rc?.d/.

Для того чтобы сервер sshd автоматически стартовал при запуске компьютера, необходимо добавить его вызов в скрипты загрузки.

Будучи запущенным, демон работает в фоновом режиме и обрабатывает все входящие запросы по порту 22. Для каждого соединения создается новая копия демона, который занимается только его обслуживанием.

Конфигурация демона определяется файлом /etc/ssh/sshd_config. Он представляет собой набор действующих строк, пустых строк и строк-комментариев. Действующие строки файла содержат название параметра и его значение. Например, строка

заставляет демон вести прослушивание на 22 порту. В конфигурационном файле указывается большое количество параметров, которые можно отнести к нескольким категориям:

  • Адреса. Интерфейс и порт, к которым привязан демон;
  • Журнализация. Опции, определяющие то, какая именно информация о работе демона должна регистрироваться и заноситься в журналы системы;
  • Управление ключами. Информация о том, в каких файлах находятся ключи, участвующие в аутентификации.
  • Аутентификация. Допустимые схемы аутентификации.
  • Дополнительные параметры. Опции, управляющие дополнительными функциями SSH, такими как переадресация портов, переадресация X11 и другие

Некоторые конфигурационные параметры могут быть переопределены опциями командной строки при вызове sshd.

Конфигурационный файл /etc/ssh/sshd_config.

  • [ssh.1] Номер порта на котором демон sshd будет вести прослушивание. Стандартный порт -- 22.
  • [ssh.2] Файлы с закрытыми ключами, использующимися для аутентификации хоста.
  • [ssh.3] Длина ключа сервера. Минимальная 512. По умолчанию 768
  • [ssh.4] Информация о том, с каким приоритетом и с каким средством данные записываются в системный журнал Syslog.
  • [ssh.5] Разрывать соединение, если пользователь не вошел в систему в течение 600 секунд. Разрешать суперпользователю root удаленно регистрироваться в системе. Разрешать вход в систему, даже если права доступа к каталогу пользователя, разрешают всеобщий доступ на чтение и запись.
  • [ssh.6] Все виды аутентификации разрешены. Аутентификация, основывающаяся на .rhost запрещена.
  • [ssh.7] Пустые пароли запрещены.

Программа ssh предназначена для регистрации на удаленном хосте с использование протокола ssh и удаленного выполнения команд. Кроме того ssh позволяет выполнять туннелирование любых TCP-соединений внутри ssh-канала (port forwarding).

Синтаксис программы ssh:

ssh опции хост пользователь@хост команда

ssh подключается к удаленному хосту, используя для этого текущее имя пользователя или, если указано явно, имя пользователь. После этого происходит двусторонняя аутентификация, т.е. удаленный хост доказывает, что он именно тот, за кого себя выдает, а регистрирующийся пользователь в свою очередь доказывает это удаленному хосту.

После этого удаленный хост, выполняет заданную команду, либо если команда отсутствует, запускает командный интерпретатор и предоставляет к нему доступ. После того, как команда выполнена, либо оболочка командного интерпретатора завершила свою работу, соединение завершается.

Программа ssh имеет свой собственный конфигурационный файл, точно такого же формата, как и конфигурационный файл сервера sshd, только в котором используются другие директивы.

Некоторые опции командной строки программы ssh

Если имя пользователя на удаленном хосте не совпадает с локальным именем, его нужно указать явно:

Более сложный пример использования ssh, который может быть полезен для удаленного резервного копирования. Команда выполняет резервное копирование каталога /var компьютера cpu на компьютер hold в файл /backup/cpu.дата. Здесь дата -- текущая дата, выдаваемая командой date +"%d%m%Y".

С текущего компьютера на компьютере cpu от имени пользователя backuper выполняется команда

find выдает список файлов, которые изменились со времени создания последней резервной копии (времени модификации /var/.last.bakup). Все эти файлы программой cpio помещаются в один файл, который записывается на удаленную машину hold в каталог /backup/cpu. Программа cpio для передачи файла также использует ssh, хотя это и не указывается явно. После того, как резервное копирование выполнено, обновляется время модификации файла /var/.last.backup

Секретные ключи хранятся в файлах identity, id_dsa и id_rsa в локальном каталоге

/.ssh (разные файлы для разных алгоритмов шифрования). Открытые ключи должны быть в файлах authorized_keys и authorized_keys2 в каталоге

/.ssh на удаленном компьютере, на котором производится регистрация. В качестве домашнего рассматривается каталог пользователя, под именем которого выполняется регистрация. Файл authorized_keys используется для хранения открытых ключей для SSH1, а в authorized_keys2 — для SSH2.

ssh дает возможность использования одного из трех различных алгоритмов асимметричного шифрования RSA или DSA.

Типы ключей

  • rsa1 -- Тип ключа RSA1, используемый в SSH версии 1
  • rsa -- Тип ключа RSA, используемый в SSH версии 2
  • dsa -- Тип ключа DSA, используемый в SSH версии 2


Для создания, преобразования и управления ключами аутентификации используется утилита ssh-keygen. Синтаксис программы:

ssh-keygen опции

Программа генерирует пару открытый ключ - секретный ключ. При этом она спрашивает, в какие файлы нужно записать ключи. По умолчанию секретный ключ записывается в

/.ssh/id_dsa), а открытый в

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

Можно сгенерировать секретные ключи, в которых парольная фраза будет отсутствовать. Хотя это и упрощает использование ключей, делать этого не рекомендуется, поскольку в этом случае файл с секретным ключом автоматически влечет за собой полный беспрепятственный доступ ко всем системам, где установлена его открытая пара.

Полученный открытый ключ нужно добавить в файлы authorized_keys удаленных хостов, к которым будет производится доступ.

Аналогично для второй версии SSH:

или воспользоваться утилитой ssh-copy-id

Можно ограничиться только второй версией SSH, однако в том случае, если SSH-сервер на удаленной машине не поддерживает SSH-протокол версии 2, аутентификацию с использованием открытых ключей провести не удастся.

После того, как аутентификация с использование открытых ключей настроена, доступ к удаленному компьютеру можно получить без пароля. Однако для того чтобы воспользоваться локальным секретным ключом нужно ввести парольную фразу.

Некоторые опции командной строки программы ssh-keygen

  • -t тип -- Тип генерируемого ключа. Допустимые типы: rsa, rsa1 и dsa.
  • -p -- Изменить парольную фразу
  • -l -- Показать отпечаток (fingerprint) секретного ключа

Для каждого открытого ключа в файлах

/.ssh/authorized_keys можно выставить опции, ограничивающие возможности клиента, аутентифицировавшегося по данному ключу. Опции находятся перед ключем,

  • from="список-шаблонов-через-запятую" - разрешает принимать соединения только с хостов, удовлетворяющих одному из шаблонов. В качестве шаблонов поддерживаются символы - ?, * и !
  • command="команда" - при аутентификации по данному ключу разрешается запускать только указанную команду, а не то что указано пользователем - например, "echo this key disabled" или "dump -params" и обязательно использовать опцию no-pty для бинарной передачи данных
  • no-port-forwarding - запретить port-forwarding
  • no-X11-forwarding - запретить X11
  • no-user-rc - Запрещает выполнение файла

Пара примеров: первый - разрешается логин по ключу только с определенной подсети, за исключением хоста 192.168.1.2. второй - при логине выполняется дамп домашнего каталога, для примера указано как выставлять несколько опций одновременно (через запятую)

Набор программ SSH позволяют не только выполнять удаленную регистрацию на компьютере для доступа к удаленной строке. Программа scp копирует файлы между хостами, полагаясь при этом на протоколы SSH и используя те же методы аутентификации, что и ssh.

Синтаксис программы scp:

scp опции пользователь@хост1:файл1. пользователь@хост2:файл2

Команда устанавливает защищенное соединение между хостом1 и хостом2 и копирует файл1 хоста1 в файл2 хоста2. Любой из хостов может быть локальным. Если имя хоста не указано, подразумевается локальный хост.

Синтаксис использования команды scp напоминает синтаксис cp. Она так же обрабатывает большое количество аргументов, использует аналогичные ключи для рекурсивного копирования, для копирования атрибутов и т.д.

Опции программы scp

  • -r -- Выполнить рекурсивное копирование каталогов
  • -p -- Сохранить по возможности атрибуты файлов (права доступа, время модификации, время доступа) при копировании
  • -C -- Выполнять сжатие файлов при передаче
  • -Pпорт -- Соединяться с удаленным компьютером по порту порт
  • -v -- Сообщать отладочную информацию о ходе SSH-соединения
  • -q -- Не выдавать индикатор прогресса

Например с удаленного хоста source на локальный хост dest нужно скопировать домашний каталог пользователя batman. Команда выполняющая копирование будет выглядеть так:

Строки, которые программа выводит на экран говорят о названии файла, его размере и времени копирования. Кроме этого строка содержит индикатор прогресса, которой показывает какая часть файла успешно скопирована.



SFTP (SSH File Transfer Protocol) — SSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Как правило, в качестве базового протокола, обеспечивающего соединение, и используется протокол SSH2, но это не обязательно.

SFTP-сервер встроен в OpenSSH. Он реализуется с помощью программы sftp-server. SFTP-клиент sftp встроен в пакет OpenSSH. В качестве SFTP-клиента для Windows может использоваться WinSCP или PSFTP из пакета PuTTY.

У SSH есть возможность, известная как перенаправление портов (port forwarding), которая позволяет передавать по SSH-соединению данные других протоколов. Перенаправление портов позволяет передать подключение, сделанное на одном конце SSH-соединения передать на другой конец и продолжить сеанс связи оттуда.

Другими словами, перенаправление портов SSH можно рассматривать как особую форму туннелирования TCP-соединений, когда SSH-клиент (или сервер; в зависимости от направления туннелирования; об этом ниже) прослушивает на одном хосте порт, и полученные на него соединения передаёт на вторую сторону, SSH-серверу (или клиенту, соответственно) внутри установленного SSH-соединения; вторая сторона инициирует соединение к серверу назначения уже от своего имени, и передаёт в нём полученные по туннелю данные.

Типичная задача, которая может решаться с помощью перенаправление TCP, это доступ к внутреннему серверу сети снаружи, через шлюз. Представьте, что у вас есть сеть, которая находится за UNIX-шлюзом, смотрящим в Интернет. У вас есть доступ к этому шлюзу по SSH. Вы находитесь в Интернете и хотите попасть на один из внутренних серверов сети, не имеет значения по какому протоколу, но пусть, например, по протоколу RDP. Возможности открыть порт при помощи трансляции адресов у вас на сервере нет (например, потому что у вас там нет прав root'а, а есть только доступ к оболочке).

Для решения такой задачи прекрасно подойдёт перенаправление TCP-порта с помощью SSH. Вы создаёте SSH-соединение на шлюз, внутри которого будет передавать трафик будущего соединения. Вы просите ssh выполнить перенаправление портов, в результате чего он открывает на прослушивание какой-либо локальный порт, обращение на который передаётся SSH-серверу на шлюз, который в свою очередь передаёт его серверу-получателю, то есть на RDP-сервер (причём делает это от своего имени; обратный адрес IP-пакетов будет адресом сервера).

Трафик внутри SSH-туннеля шифруется, поэтому перенапраление портов может быть очень полезным для шифрования данных незащищённых протоколов, например, POP3, или создания небольших виртуальных сетей. С другой стороны, нужно иметь в виду, что с помощью перенаправления портов легко организовать доступ изнутри сети наружу или наоборот, и не забывать об этом особенно при выделении учётных записей с доступом к облочке (по-русски говоря, шелла) на шлюзе (по сути, это равносильно предоставлению доступа ко внутренней сети снаружи).

Перенаправление портов может быть отключено либо в конфигурационном файле программ ssh и sshd, либо на стадии их компиляции. Тем не менее пользователь может иметь собственные программы переадресации, на которые конфигурация ssh и sshd не будет оказывать никакого влияния.

Различают два вида перенаправления портов:

  • Локальное. Клиент принимает подключение и посылает запрос на инициирование соединения SSH-серверу, который в свою очередь устанавливает незащищённое соединение с адресатом;
  • Удаленное. Сервер принимает подключение и посылает запрос на инициирование соединения SSH-клиенту.

Фактически два этих режима отличаются только тем, с какой стороны будет инициироваться соединение: со стороны клиента или со стороны сервера.

Лучшие SSH-клиенты для Windows, Linux и macOS

Краткий обзор SSH-клиентов для всех актуальных операционных систем. Посмотрим, чем они отличаются друг от друга, какие у новых клиентов преимущества и есть ли хорошие бесплатные варианты.

Что такое SSH?

SSH или Secure Shell (что в переводе значит «безопасная оболочка») — это сетевой протокол, используемый для подключения к удаленным компьютерам и управлениями ими с помощью технологии туннелирования.

Если у вас, к примеру, есть сервер в Timeweb под управлением Linux, то вы наверняка подключаетесь к нему через OpenSSH (серверная реализация Secure Shell с открытым исходным кодом). То есть вводите сначала команду в духе ssh root@192.168.60.55 и потом выполняете команды, связанные непосредственно с ОС. Подобные возможности дают технологии Telnet и rlogin, но они не особо прижились.

Ключевое преимущество SSH, в сравнении с конкурентами, заключается в повышенной безопасности. Этот протокол шифрует передаваемые команды и защищает соединение между администратором и сервером от третьих лиц.

А что такое SSH-клиент?

Это приложение на стороне клиента, которое используется для передачи команд на удаленный компьютер. В примере выше мы говорили о подключении к серверу через терминал в macOS и Linux. Чтобы провернуть подобное в Windows, нужна специальная программа. Например, PuTTY.

Зачастую SSH-клиенты выполняют те же задачи, что и терминал, но обладают расширенной функциональностью. У них схожие принципы работы, и все различия можно оценить только в специфичных сценариях использования Secure Shell.

Выбираем SSH-клиент

Мы уже выяснили, что обособленно пользователи получить какую-то пользу от протокола не могут. Для управления нужна дополнительная утилита. Вопрос в том, какая именно. Secure Shell настолько востребован, что разработчики создали уже несколько десятков SSH-клиентов под различные платформы. В этом материале рассмотрим лучшие из них, разработанные для Windows, macOS и Linux.

Некоторые из них кроссплатформенные (то есть работают сразу на нескольких ОС) или запускаются в браузерах (это тоже делает их универсальными).

SSH-клиенты для Windows

Начнем с популярнейшей платформы. Несмотря на на отсутствие встроенных инструментов и общую неадаптированность под разработку и работу с серверами, для Windows создали как минимум десяток функциональных и быстрых SSH-клиентов.

PuTTY

Самый известный SSH-клиент для Windows. Пожалуй, единственный, что на слуху у всех вебмастеров. PuTTY отличается от конкурентов логичным интерфейсом вкупе с богатым арсеналом возможностей, включая настройку прокси-серверов и сохранение параметров подключения.

Интерфейс приложения PuTTY

PuTTY распространяется бесплатно и имеет открытый исходный код. При этом является одним из немногих SSH-клиентов, до сих пор активно развивающихся и получающих новые версии.

Утилита поддерживает протоколы SCP, SSH, rlogin и Telnet, а также работает со всеми методами шифрования данных.

Оригинальная программа доступна только для Windows, но есть порты от сообщества под другие платформы

KiTTY

За свою жизнь PuTTY обзавелся несколькими десятками форков (копий) от сторонних разработчиков. Каждый пытался внести в знаменитый SSH-клиент что-то свое. В итоге некоторые выросли в полноценные альтернативы, во много затмившие оригинал.

KiTTY базируется на PuTTY, но обладает массой преимуществ. Можно:

  • выставлять собственные фильтры для отдельных сессий;
  • хранить настройки в конфигурационной файле самой утилиты (чтобы хранить ее на флэшке, например, сохраняя настройки);
  • создавать алиасы для часто используемых команд (и наборов команд);
  • добавлять скрипты для автоматический аутентификации на сервере;
  • использовать гиперссылки;
  • настраивать интерфейс, меняя цвет текста, шрифты, степень прозрачности окна и другие визуальные элементы.

MobaXterm

Многофункциональный SSH-клиент, полюбившийся пользователям за высокую скорость работы, комфортный интерфейс и кучу дополнительных функций, отсутствующих у конкурентов. В нем есть браузер файлов, встроенный XServer для управления графическим интерфейсом на удаленном компьютере, масса плагинов, расширяющих возможности клиента, и portable-версия, работающая без установки.

Интерфейс терминала MobaXterm

Проект условно-бесплатный, поэтому большая часть функций недоступна до оплаты. Если не покупать платную версию, то функциональность MobaXterm будет мало чем отличаться от таковой в PuTTY. За профессиональную версию придется отдать 69 долларов.

Solar-PUTTY (бывший SolarWinds)

Один из немногих SSH-клиентов с современным интерфейсом. Это платная программа, что несомненно является ее недостатком. Но, в отличие от популярнейшего PuTTY, Solar умеет гораздо больше интересных вещей и лишен недостатков оригинала.

Интерфейс Solar-PuTTY

  • Сохраняет данные для входа. Не приходится постоянно проходить авторизацию заново.
  • Работает сразу с несколькими сессиями в одном окне (по вкладке на каждую).
  • Автоматически восстанавливает подключение, если оно по какой-то причине было утеряно.
  • Интегрирован в поисковик Windows.
  • Не требует установки. Всегда работает в portable-режиме.

Приложение обойдется в 99 долларов (

SmarTTY

Еще одна попытка упростить жизнь веб-разработчикам, полагающимся на SSH. Создатели SmarTTY уделил много внимания ускорению работы пользователей и повышению удобства выполнения элементарных задач.

Например, появился режим отображения терминалов в отдельных вкладках. Сам терминал научился автоматически завершать команды и быстро искать файлы. В него добавили графический интерфейс для загрузки файлов на сервер без необходимости использовать командную строку.

Также в SmarTTY встроен многофункциональный текстовый редактор с возможностями Nano и hex-терминал для отслеживания COM-портов. А еще есть portable-версия, для работы с которой даже не нужно выполнять установку.

Xshell

Полнофункциональный SSH-клиент для Windows. Отличается от PuTTY и схожих продуктов возможностью задавать разные параметры для каждой терминальной сессии, создавать общие скрипты на несколько сессий.

Он поддерживает командную строку Windows и протокол SCP. Также в него встроен файловый менеджер для управления документами в графической среде.

Интерфейс XShell

Можно записывать выполняемые команды и превращать «записанный» материал в один скрипт, который после можно перезапустить в любой момент.

Tera Term

Популярный эмулятор терминалов для Windows с открытым исходным кодом. Может имитировать DEV VT100, DEC VT382 и другие модели. Написан на языках С и С++. Поддерживает технологии Telnet, SSH 1 и SSH 2.

Tera Term можно интегрировать с другими приложениями с помощью встроенного веб-сервера. В нем можно настроить повторяющиеся команды, поддерживающие терминал в рабочем состоянии, создавать скрипты на собственном языке Tera Term Language.

Из недостатков можно выделить устаревший дизайн и не совсем интуитивный интерфейс в сравнении с другими подобными приложениями.

Распространяется бесплатно, как и другие Open-Source-продукты.

SSH-клиенты для Linux

Пользователи Linux редко используют графические утилиты или какие-то усовершенствованные варианты SSH. Обычно все работают во встроенном терминале, но есть несколько неплохих решений для тех, кому нужно больше.

Terminal

В UNIX-подобных операционных системах есть встроенная поддержка OpenSSH. Можно использовать базовый терминал для подключения к удаленному серверу и управлению им. Интерфейс аналогичный тому, что вы можете встретить в большинстве SSH-клиентов. Только не придется скачивать сторонние программы и плагины.

Чтобы подключиться через терминал к серверу, надо ввести команду:

В моем случае это выглядит так:

После этого терминал запросит разрешение на установку соединения с удаленным сервером. Нужно согласиться, введя команду Yes и пароль администратора, чтобы авторизоваться и получить контроль над удаленным ПК.

Asbru Connection Manager (Linux)

Бесплатный интерфейс для удаленного подключения к серверу и автоматизации повторяющихся на нем задач. У Asbru простой механизм настройки соединения с VDS и есть свой язык для создания скриптов, как в SecureCRT.

Из дополнительных возможностей можно отметить функцию подключения к удаленному ПК через прокси-сервер, интеграцию с сервисом KeePassX, поддержку отдельных вкладок и окон под разные сессии, запущенные единовременно.

Интерфейс программы Asbru

А еще он грамотно вписывается в интерфейс GTK и в окружение GNOME как визуально, так и в техническом плане.

Asbru можно запустить на Windows, используя компоненты Xming и включив WSL, но это весьма специфичный сценарий.

Бывший Snowflake. Графический клиент для подключения к серверу по протоколам SFTP и SSH. Включает в себя текстовый редактор, анализатор пространства на жестком диске, утилиту для считывания логов и прочие полезные инструменты.

Интерфейс приложения Muon

Из прочих преимуществ отмечу:

  • Быстрый доступ к часто используемым функциям вроде копирования файлов, архивирования, запуска скриптов, проверки прав на директории и т.п.
  • Поиск по массивным логам.
  • Встроенный терминал с поддержкой сниппетов (сокращенных версий команд, созданных пользователем).
  • Сетевые инструменты и приложение для менеджмента SSH-ключей.

Muon создавался с прицелом на веб-разработчиков, работающих над бэкэнд-составляющей сайтов.

SSH-клиенты для macOS

Компьютеры Apple поддерживает подключение по протоколу SSH прямо из встроенного терминала. Для этого используется та же команда, что и в Linux:

Также с последующем подтверждением подключения и авторизацией. Поэтому в macOS (как и в Linux) обычно не используются сторонние SSH-клиенты. Но они есть, и многие из них довольно качественные.

iTerm 2

Одна из главных альтернатив встроенному в macOS терминалу. Попытка расширить возможности стандартной командной строки необходимыми функциями, которые Apple упорно игнорирует годы напролет. Например, поддержку режима сплит-скрин, когда в одном окне отображается сразу два терминала с разными сессиями, или возможность добавлять комментарии к запущенным командам.

SHH-клиент iTerm2

Отдельно отметим функцию Instant Playback. С помощью нее можно воспроизвести одну или несколько команд, которые были выполнены ранее, не вводя их заново. Ну а еще тут можно выделять, копировать и вставлять текст, не используя мышь (пользователи macOS поймут).

Shuttle

Технически это не полноценный SSH-клиент, как другие описываемые в статье. Это кнопка в панели инструментов, открывающая быстрый доступ к некоторым функциям для управления сервером. Прелесть утилиты заключается в ее универсальности и расширенных возможностях для ручной настройки.

Все параметры хранятся в файле

/.shuttle.json, который идет в комплекте с базовой утилитой. Туда можно прописать любой скрипт, используемый вами в терминале, а потом запускать его прямо с панели инструментов через компактный графический интерфейс Shuttle. Это может заметно ускорить выполнение кучи рутинных процедур.

Core Shell

SSH-клиент для macOS, поддерживающий работы сразу с несколькими хостами. Можно быстро между ними переключаться в одном окне с помощью вкладок или выделить каждый из них в отдельное окно. Каждому хосту назначается своя цветовая гамма. Чтобы было еще проще их разбивать по категориям, Core Shell поддерживает систему тегов.

Используя Core Shell, можно подключиться к VDS через прокси-сервер и выполнять переадресацию агента SSH.

Core Shell поддается скрупулезной настройке и «подгонке под себя». Причем клиент способен запоминать глобальные параметры для всех хостов и отдельные параметры для каждого из хостов. А еще в него интегрирована поддержка iCloud Keychain (хранилище паролей Apple).

Кроссплатформенные клиенты

Эмуляторы терминала, написанные на языках, поддерживающих сразу несколько операционных систем.

Hyper

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

По словам разработчиков, это попытка создать максимально быстрый и надежный терминал. Это был их приоритет при разработке. При этом он построен на базе фреймворка Electron, что делает его универсальным и расширяемым.

SSH-клиент Hyper

Если вы перфекционист и привыкли к изысканным интерфейсам macOS, то Hyper станет правильным выбором. Он здорово впишется в дизайн ОС Apple благодаря своим плавным линиям и приятными анимациям.

Доступен на Windows, macOS и Linux. Распространяется бесплатно.

Terminus

Терминал нового поколения (как его называют разработчики). Кроссплатформенный эмулятор терминала с поддержкой WSL, PowerShell, Cygwin, Clink, cmder, git-bash и десятка других технологий.

Есть полезные опции, такие как восстановление закрытых вкладок из предыдущей сессии и кликабельные пути к директориям.

Интерфейс Terminus можно настроить под себя с помощью разметки CSS. То же касается и функциональной составляющей. Ее можно «прокачать» за счет сторонних плагинов, число которых постепенно растет.

Доступен на Windows, macOS и Linux. Распространяется бесплатно.

Tectia

Продвинутый SSH-клиент, используемый крупнейшими банками мира, страховыми компаниями, технологическими корпорациями и государственными органами. Он обеспечивает безопасную передачу файлов за счет использования множества методов шифрования данных.

Tectia поддерживает стандарт аутентификации X.509 PKI, задействует сертифицированные криптографические методы FIPS 140-2 и может работать со смарткартами. Услугами Tectia пользуются такие внушительные структуры, как NASA и Армия США. Они доверяют Tectia, потому что это стабильный SSH-клиент с круглосуточной отзывчивой поддержкой. Как любой дорогой коммерческий продукт.

Доступен на Windows, Linux и других UNIX-подобных ОС. Обойдется в 133 доллара за клиент-версию и 650 долларов за сервер-версию.

Termius

Кроссплатформенный SSH-клиент с приложением-компаньоном для iOS и Android. Наличие мобильной версии — ключевое преимущество программы. С помощью нее можно на ходу вносить изменения на сервер, управлять базой данных и выполнять прочие действия, обычно требующие доступа к полноценному ПК.

SSH-клиент Termius

Он адаптирован под сенсорные экраны и синхронизируется между всеми вашими устройствами, используя стандарт шифрования AES-256.

Доступен сразу на пяти платформах, включая мобильные. Распространяется по подписке за 9 долларов (

Poderosa

Профессиональный SSH-клиент, перешедший из стана opensource-проектов в разряд платных. Разработчики проекта видят своей задачей создание понятного интерфейса для управления серверами. Так, чтобы привыкшие вебмастера не путались, но обладали более широким набором инструментов.

Из функций создатели Poderosa выделяют удобный мультисессионный режим, когда экран делится на несколько частей и показывает сразу несколько терминалов. Можно также создать несколько вкладок, в каждый из которых будет по 4 терминала.

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

SecureCRT

Коммерческий SSH-клиент с расширенным набором функций. Отличается от большинства конкурентов усиленными механизмами защиты данных. Поддерживает сразу несколько протоколов, включая SSH2 и Telnet. Эмулирует различные Linux-консоли и предлагает массу настроек внешнего вида.

SSH-клиент SecureCRT

Из отличительных функций можно отметить возможность создавать свои горячие клавиши, менять цвет отображаемого контента, искать по ключевым словам, запускать несколько окон с разными или одним сервером, открывать несколько сессий в разных вкладках. Также функциональность SecureCRT можно расширить за счет скриптов на языках VBScript, PerlScript и Python.

Доступен сразу на трех ОС. Распространяется по подписке за 99 долларов (

SSH-плагины для браузеров

Портативные SSH-клиенты, запускающиеся внутри браузеров и не требующие специфической ОС.

Chrome Secure Shell App

Google Chrome уже давно метит в полноценную платформу с функциональностью операционной системы. Поэтому разработчики из команды Google Secure Shell поспешили создать для него полнофункциональный эмулятор терминала.

С помощью Chrome Secure Shell App можно подключиться к серверу по протоколу SSH и выполнять стандартные команды, к которым вы привыкли, во встроенном терминале или в условном PuTTY. Разница отсутствует.

Получалась неплохая бесплатная альтернатива для тех, кто не хочет ставить сторонние приложения.

FireSSH

Еще один плагин, имитирующий терминал в браузере. Ранее он функционировал внутри Firefox, но компания Mozilla ограничила поддержку расширения. Поэтому сейчас FireSSH работает только в Waterfox. Это инди-форк от Firefox.

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

Выводы

Что касается выбора, то все зависит от личных предпочтений. Кому-то важна визуальная составляющая, кому-то функциональность, а кому-то хочется управлять сервером через SSH как можно проще. В любом случае можно попробовать все бесплатные варианты и принять решение уже после.

Что такое протокол SSH

Иными словами, SSH — это дистанционная командная строка. Визуально вы работаете на своем компьютере, но в реальности — на другом.

Что значит «протокол»?

Протокол — это набор соглашений, правил, по которым разные программы могут обмениваться информацией. SSH — это набор правил, который известен и вашему компьютеру, и физически отдаленному компьютеру.

Что значит «защищенный»?

Для чего нужен SSH?

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

Как подключаться по SSH?

Для подключения к удаленной машине по SSH нужен клиент — специальная программа. В *nix-подобных системах (Linux, macOS) клиент обычно установлен в системе по умолчанию, и достаточно открыть терминал. В Windows нужно скачать сторонний клиент, например, Putty.

Для подключения нужно указать адрес сервера и, опционально, имя пользователя и порт. Вот как выглядит команда при использовании консольного клиента (в терминале):

Например, для подключения к серверу 52.307.149.244 в аккаунт ivan нужно ввести:

Если не указывать порт, то будет использован порт SSH по умолчанию — 22 . Используемый порт задается при настройке SSH-сервера, программы, которая запущена на удаленном компьютере и ожидает подключения извне.

В графическом клиенте вроде Putty нужно ввести ту же информацию в соответствующие поля:

Putty - стартовая страница

Fingerprint

Введите yes в первый раз.

Это нужно для повышения безопасности. При настройке SSH-сервера создается уникальная комбинация символов — fingerprint («отпечатки пальцев»). Ваш компьютер запоминает эту комбинацию и сверяет ее при каждом новом соединении. Если кто-то переустановит SSH-сервер, или всю операционную систему, или вообще заменит удаленный компьютер, сохранив его адрес, то при следующем соединении вы узнаете об этом, потому что изменится fingerprint.

Подключение по SSH по паролю

Простейший вариант — подключение по паролю. После ввода команды ssh система запросит пароль:

Пароль придется вводить каждый раз.

Подключение по SSH по ключу, без пароля

Для удобного подключения по SSH (и многим другим сервисам) без ввода пароля можно использовать ключи.

Нужно создать пару ключей: приватный (закрытый) ключ и публичный (открытый) ключ. Приватный ключ нужно хранить и никогда никому не показывать. Публичный ключ можно показывать всем и распространять свободно.

Генерация ключей

Создадим пару ключей:

Программа запустится и спросит, куда сохранять ключи:

Нажмите Enter для сохранения в стандартное место — директорию .ssh/id_rsa в вашей домашней директории.

Программа запросит passphrase. Это вроде пароля для ключа. Можно просто нажать Enter и пропустить этот шаг. Или ввести passphrase — тогда его нужно будет вводить каждый раз, когда используется ключ.

Теперь у вас есть два файла:

В Windows можно использовать ssh-gen в подсистеме Ubuntu for Windows или в командной строке Git for Windows. Или создавать ключи графической утилитой вроде PuTTYgen.

Загрузка публичного ключа на сервер

Нужно добавить публичный ключ на сервер в файл

/.ssh/authorized_keys . Самый простой способ — запустить на локальной машине команду для копирования ключа:

Другой способ — подключиться по паролю, открыть в редакторе файл

/.ssh/authorized_keys и добавить в конец текст из вашего файла

Теперь при подключении пароль запрашиваться не будет 1 .

После включения соединений по ключу рекомендуется отключить подключение по паролю.

ssh-agent

При работе с ключами возможны две неудобные ситуации:

  1. Если при создании ключа вы указали passphrase (пароль для ключа), то вам придется вводить пароль при каждом подключении.
  2. Если у вас есть несколько ключей для разных целей, то при соединении по ssh придется указывать нужный ключ вручную

ssh-agent решает эти проблемы. Этот агент аутентификации (authentication agent) работает на фоне в *nix-системах. В зависимости от системы, вам, возможно, придется установить и настроить его автозапуск самостоятельно.

Если добавить ключ к агенту, то:

  1. для него больше не будет спрашиваться passphrase
  2. не нужно будет вводить ключ вручную — он будет автоматически использован при соответствующем подключении

ssh-add /home/demo/.ssh/id_rsa добавит ключ id_rsa в запущенный в системе агент. Если у него есть passphrase, то агент попросит ввести его.

Если запустить ssh-add без аргументов, то будут добавлены ключи

Список добавленных в агент ключей можно посмотреть командой ssh-add -L :

ssh-agent привязан к сессии. Поэтому, например, если перезагрузить компьютер, то ключи нужно будет добавлять в агент заново.

Форвардинг (проброс) ключей

Если вы подключились к удаленному серверу X, и с него хотите подключиться к другому серверу Y, например, чтобы сделать git pull с GitHub’а, то придется держать копию ваших ключей на сервере X.

Утилита ssh с флагом -A позволяет «пробросить» ключи с подключаемой машины в удаленную:

Ключи, добавленные к агенту аутентификации (ssh-agent) станут доступными на удаленном сервере. При этом файлы-ключи физически не будут находиться на сервере.

Частые вопросы

Чем Telnet отличается от SSH?

Telnet это конкретная программа с графическим интерфейсом, с помощью которой можно соединяться по SSH. Обычно ей пользуются только Windows пользователи, в Linux и MacOS используют консольную утилиту ssh.

Поэтому, случайно натолкнувшись на проект Win32-OpenSSH, я решил поделиться опытом настройки. Возможно кому-нибудь эта тулза сэкономить кучу нервов.

Отмечу, что данный проект пока что находится на стадии beta, поэтому его не рекомендуют использовать в production.

Итак, скачиваем последний релиз, на текущий момент это 7.9.0.0p1-beta. Есть версии как для 32 так и для 64 битных систем.

Распаковываем в C:\Program Files\OpenSSH
Обязательный момент для корректной работы: права на запись в этой директории должны быть только у SYSTEM и у админской группы.

Устанавливаем сервисы скриптом install-sshd.ps1 находящимся в этой директории


Разрешаем входящие подключения на 22 порт:


Уточнение: апплет New-NetFirewallRule используется на Windows Server 2012 и новее. В наиболее старых системах (либо десктопных) можно воспользоваться командой:


При запуске будут автоматически сгенерированы хост-ключи (если отсутствуют) в %programdata%\ssh

Автозапуск сервиса при запуске системы мы можем включить командой:


Так же, можно сменить командную оболочку по умолчанию (после установки, по умолчанию — cmd):


Уточнение: Необходимо указывать абсолютный путь.

А дальше настраиваем sshd_config, который расположем в C:\ProgramData\ssh. Например:


И создаем в пользовательской папке директорию .ssh, а в ней файл authorized_keys. Туда записываем публичные ключи.

Важное уточнение: права на запись в этот файл, должен иметь только пользователь, в чьей директории лежит файл.

Но если у вас проблемы с этим, всегда можно выключить проверку прав в конфиге:


К слову, в C:\Program Files\OpenSSH лежат 2 скрипта (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), которые должны но не обязаны фиксить права, в том числе и с authorized_keys, но почему-то не фиксят.

Не забывайте перезапускать сервис sshd после для применения изменений.

Читайте также: