Оглавление

 

Что такое SSH и зачем он нам вообще нужен?

SSH (англ. Secure SHell — защищенная оболочка) — сетевой протокол прикладного уровня, предназначеный для безопасного удаленного доступа к UNIX-системам. Данный протокол эффективен тем, что шифрует всю передаваемую информацию по сети, в отличие от протокола telnet. 

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

SSH клиенты для windows

Что такое клиент SSH и сервер SSH

Подключение по протоколу SSH реализуется с помощью двух основных компонентов: клиента и сервера.

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

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

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

Стандарт SSH включает в себя три протокола:

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

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

клиент ssh

Клиент шлет запрос в первый раз, когда устанавливается безопасное соединение транспортного уровня. Второй запрос направляется после завершения аутентификации SSH-клиента.

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

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

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

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

  • Передача любых данных через защищенное SSH-соединение, включая сжатие данных для последующего шифрования.
  • X11 Forwarding — механизм, позволяющий запускать программы UNIX/Linux-сервера в виде графической оболочки, как в Windows (использовать X Window System).
  • Переадресация портов — передача шифрованного трафика между портами разных машин.

Безопасность SSH-соединения обеспечивается:

  • шифрованием данных одним из существующих алгоритмов
  • аутентификацией сервера и клиента одним из нескольких доступных методов
  • наличием дополнительных функций протокола, направленных на предупреждение различных хакерских атак

Аутентификация сервера дает защиту от:

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

На сегодняшний день существуют две версии протокола SSH (SSH-1 и SSH-2), причем вторая версия усовершенствована и расширена по сравнению с первой. Например, вторая версия устойчива к атакам вида MITM («человек посередине», атака посредника). Также существуют две редакции данного протокола: открытая версия (бесплатная) и коммерческая (платная). Бесплатная версия — OpenSSH — встроена во все UNIX-подобные операционные системы в виде стандартных утилит SSH-клиента и SSH-сервера.

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

Для ОС Windows выпущены различные SSH-клиенты и оболочки, самые распространенные из них — это бесплатные PuTTY и WinSCP. Для других операционных систем также существуют свои SSH-клиенты.

Передача данных по SSH-протоколу через небезопасную сеть
Передача данных по SSH-протоколу через небезопасную сеть

Что такое SFTP-протокол

SFTP-протокол (от англ. SSH File Transfer Protocol) – сетевой протокол прикладного уровня, предназначенный для передачи файлов и других действий с ними через имеющееся надежное соединение. Протокол был разработан как расширение SSH-2, предназначенное для операций с файлами по защищенному каналу, однако может работать и с другими протоколами, обеспечивающими безопасное соединение сервера с клиентом. Иными словами, для надежной работы через SFTP-протокол необходимо иметь установленное защищенное соединение (например, SSH), которое проводит аутентификацию клиента и сервера и устанавливает факт их надежности, поскольку сам SFTP-протокол не проводит аутентификацию и не обеспечивает безопасность.

SFTP имеет ряд преимуществ перед своими предшественниками — FTP и SCP — таких, как прерывание передачи файла, удаление, возобновление передачи, связь переданных файлов с основными атрибутами, например, меткой даты/времени, а также более высокая платформонезависимость.

SFTP-протокол реализуется через SFTP-сервер и SFTP-клиент, которые являются подсистемами OpenSSH.

Для чего используются SSH и SFTP протоколы

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

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

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

Как работает SSH

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

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

Настройка SSH

Настройка будет происходить под выделенный сервер, VDS, VPS на Debian, Ubuntu. Конфигурационный файл располагается тут: /etc/ssh/sshd_config.
Если у вас обычный хостинг, всё и так должно быть настроено как надо, переходите к разделу авторизации по ключам.

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

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

Где найти доступы к серверу

Для подключения по SSH потребуется указать IP-адрес, пароль и логин администратора сервера. Эти данные можно найти на почте, привязанной к аккаунту (после активации VDS приходит письмо с инструкцией) или в Личном кабинете — в разделе «Товары» откройте подраздел «Виртуальные серверы» — выберите сервер в списке, сверху «Инструкция».

В новой вкладке откроется страница с необходимой информацией.

Как подключиться по SSH с компьютера на ОС Windows

Если на вашем компьютере установлена ОС Windows, а на сервере — UNIX-подобная система (например, Ubuntu, Debian, CentOS и др.), то для установки SSH-соединения можно использовать PuTTY. Это бесплатная программа под Windows состоит из одного запускаемого файла и не требует установки.

Чтобы установить соединение при помощи PuTTY, необходимо проделать следующие действия:

0. Скачайте нужную версию PuTTY по ссылке
1. Запустите файл putty.exe. Откроется окно программы:

По умолчанию никаких настроек программы менять не нужно. Достаточно убедиться, что указан порт Port 22 и тип соединения Connection type — SSH.

2. В поле Host Name (or IP address) введите IP-адрес сервера. Нажмите кнопку Open.

Может появиться предупреждение системы безопасности PuTTY — оно срабатывает при подключении к новому серверу.  Нажмите Да — и соединение продолжится.

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

4. В следующей строке введите пароль пользователя. При вводе пароля символы в командной строке не отображаются: можно набрать пароль вслепую или вставить кликом правой кнопки мыши, предварительно скопировав (Ctrl+C) его из инструкции. После ввода нажмите клавишу Enter. Если имя пользователя или пароль указаны неправильно, выведется ошибка «Access denied». В случае успешного подключения откроется командная строка виртуального сервера.

Как подключиться к серверу по SSH с компьютера на Linux/MacOS

Подключиться по SSH к виртуальному серверу можно через терминал — в обоих случаях это приложение предустановлено.

В операционных системах семейства Linux (Ubuntu и др.) его можно открыть сочетанием клавиш Ctrl+Alt+T.

В MacOS приложение Терминал можно найти через Spotlight (иконка поиска в правом верхнем углу экрана).

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

ssh username@ip_adress

где вместо username нужно указать логин пользователя, вместо ip-adress — IP-адрес сервера, к которому вы подключаетесь. Если на сервере используется нестандартный порт SSH, команда изменится:

ssh username@ip_adress -p 22

где 22 — порт, по которому будет произведено подключение по SSH.

После ввода команды система запросит подтверждение подключения (необходимо ввести yes и нажать Enter) и пароль пользователя. После ввода нажмите клавишу Enter — откроется SSH-соединение:

Как ограничить доступ по SSH

Все изменения вносятся в /etc/ssh/sshd_config
Чтобы изменения вступили в силу, необходимо перезагрузить SSH

Сменить порт

Port 9724

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

Запретить связь по старому протоколу

Здесь мы определяем, что связь возможна только по протоколу v2

Protocol 2

Запретить авторизацию под root

PermitRootLogin no

По умолчанию no. Если yes, можно авторизовываться под рутом. Под root работать небезопасно, лучше создать своего пользователя и работать под ним.

Если вы авторизованы не под root, перед всеми консольными командами нужно добавлять sudo — расшифровывается как Substitute User and DO — подмени юзера и делай (под ним). Например, позволяет исполнять команды от имени суперпользователя root.

Уменьшить число попыток авторизации

MaxAuthTries 2

Количество попыток ввода пароля. По умолчанию 6. При неудачном переборе сеанс связи обрывается.

Уменьшить время ожидания авторизации

LoginGraceTime 30s

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

Закрыть доступ по IP

Прежде чем настраивать ограничения по IP, убедитесь, что в случае ошибки в настройке и последующего бана собственного IP у вас останется альтернативный способ вернуть доступ к серверу

Если доступ нужен только вам, самым простым и надёжным будет закрыть доступ отовсюду, кроме вашего IP или, если он динамический, то диапазона IP.

  1. Открываем /etc/hosts.allow и добавляем туда SSHD: 192.168.1.1

    где 192.168.1.1 — ваш IP. Если у вас динамический IP, определите IP с маской подсети и запишите Вашу подсеть вместо IP, например:

    SSHD: 192.168.0.0/16

  2. Открываем /etc/hosts.deny и добавляем туда: SSHD: ALL

Теперь никто, кроме вас, не сможет авторизоваться на сервере по SSH.

Ещё один способ ограничения доступа по IP

Можно воспользоваться следующей директивой:

AllowUsers = *@1.2.3.4

Здесь мы разрешаем доступ только для IP 1.2.3.4

Как подключиться по SSH из Windows

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

На вашем компьютере установлена ОС Windows

Для подключения по SSH в ОС Windows мы рекомендуем использовать SSH-клиент PuTTy. Скачать клиент можно на официальном сайте (англоязычная версия).

Подключение по SSH Windows:

  1. 1.Запустите программу PuTTY;
  2. 2.

    На странице с основными настройками сеанса PuTTY, в поле «Host Name» введите IP-адрес сервера.

    Как узнать IP-адрес сервера

    IP-адрес сервера указан в информационном письме, отправленном на контактный e-mail после заказа хостинга. Также данная информация продублирована в Личном кабинете. Авторизуйтесь на сайте REG.RU и кликните по нужной услуге хостинга. IP-сервера указан на вкладке «Доступы»:

    подключение по ssh шаг

    подключение по ssh шаг 2

    Если вы уже делегировали домен на сервер, вместо IP-адреса можно указать домен. Также в качестве хоста можно использовать технологический домен.

  3. 3.

    При первом подключении к серверу появится окно «Предупреждение безопасности PuTTY». Нажмите Да:

    подключение по ssh шаг 3

  4. 4.

    В открывшемся окне PuTTY введите ваш логин услуги хостинга вида «u1234567». Нажмите Enter. Затем введите ваш пароль от услуги хостинга и нажмите Enter. В целях безопасности вводимый пароль не отображается на экране в виде символов. Набирая пароль, вы не увидите на экране ни самого пароля, ни звёздочек.

    Чтобы вставить скопированный логин и пароль в окно PuTTy, нажмите Shift + Insert.

    Как узнать логин и пароль услуги хостинга

    Логин и пароль услуги хостинга указаны в информационном письме, отправленном на контактный e-mail после заказа хостинга. Также данная информация продублирована в Личном кабинете. Авторизуйтесь на сайте REG.RU и кликните по нужной услуге хостинга. Логин и пароль указаны на вкладке «Доступы»:

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

    подключение по ssh шаг 4

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

Как подключиться к серверу по SSH

В зависимости от операционной системы, установленной на вашем домашнем компьютере (не путайте с ОС хостинга), для SSH подключения к серверу Linux-хостинга возможны следующие варианты:

  • Если на вашем компьютере установлена ОС Windows, то подключение происходит через Putty.
  • Для ОС Linux на компьютере доступно подключение к SSH через терминал.

На вашем компьютере установлена Linux-подобная ОС (как подключиться по SSH Ubuntu, Kubuntu, Fedora, …)

Для ОС Linux доступ по SSH осуществляется через терминал, который уже предустановлен в самой системе.

  1. 1.

    Запустите терминал:

    • в Unity (Ubuntu): «Главное меню» — в поисковой строке введите слово «Терминал». Либо просто нажмите комбинацию клавиш: Ctrl+Alt+T;
    • в Xfce (Xubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал»;
    • в KDE (Kubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал».
  2. 2.

    Введите команду:

    ssh u1234567@123.123.123.123

    Где u1234567 — логин учётной записи хостинга (Как узнать логин и пароль услуги хостинга?; 123.123.123.123 — IP-адрес сервера (Как узнать IP-адрес сервера?).

  3. 3.Нажмите «Enter», введите пароль услуги хостинга.

Готово, вы успешно завершили ssh-подключение через терминал.

Можно ли создать дополнительного SSH-пользователя

На Hosting Linux подключение по SSH возможно только под основным логином хостинга (вида u1234567). Создать дополнительного пользователя SSH нельзя.

Как создать архив по SSH

Создание архива tar.gz

Подключитесь к серверу по SSH и выполните команду:

tar -czvf name.tar.gz path/folder-name/

  • Данная команда создаст архив папки path/folder-name/. Название архива — name.tar.gz.
  • Все файлы будут сжаты при помощи gzip.
  • В процессе создания архива будет показан процесс архивации. Если данная информация вам не нужна, уберите ключ «v» из команды.

Разархивация происходит при помощи команды:

tar -xzvf name.tar.gz

Создание архива zip

Подключитесь к серверу по SSH и выполните команду:

zip -r имя-архива.zip /путь-к-папке # пример zip -r log.zip /var/log

В результате команды из примера будет создан архив папки /var/log со всем её содержимым. Имя созданного архива: log.zip. Разархивировать можно будет при помощи команды:

unzip имя-архива.zip

Полезные команды для SSH клиентов

Рассказать о всех командах Unix будет сложно, поэтому напишем лишь несколько полезных команд:

man [имя команды] — выдаст подробную информацию по команде, например: man mv
Для выхода из man, т.е. из руководства по команде, нажмите q (Quit — Выход).
[имя команды] —help — также позволит посмотреть описание команды.

ls — вывести список файлов;
ls -la — покажет все файлы (включая скрытые), размер файлов, владельца и группу владельца, права на них, дату последнего изменения;
ls -lha — то же, что предыдущая команда, только размер файлов будет показан в удобном виде;
ls -lha | less — позволит просматривать файлы постранично (если их много);

cd [имя директории] — переход в выбранную директорию;
cd ../ — переход на директорию выше;
cd ~ — переход в корневую директорию;

mv — переименовать и/или переместить;

rm — удалить;

cp — копировать;

> — очистка файла. Например, можно применить к файлам логов ( > access.log, > error.log, > combined.log);

mc — запуск Midnight Commander — что-то вроде Norton Commander, в котором удобно работать с файлами, а также возможно работать с ними по sftp (ftp внутри ssh);

chmod — установка прав на файл или директорию;

cat -объединяет файл или несколько файлов, либо ввод со стандартного устройства ввода и выводит результат на стандартное устройство вывода;
cat [имя файла] — выведет на экран содержимое файла;
cat [имя файла] | grep [искомая строка] — выведет на экран строки файла, включающие искомую строку;

mkdir [имя директории] — создание директории (папки).

    [spoiler title=»Источники»]

    • https://x-inside.ru/ssh-klienty-dlya-windows/
    • https://FB.ru/article/269605/klient-ssh-nastroyka-luchshiy-ssh-klient
    • https://FirstVDS.ru/technology/ssh-connection
    • https://sheensay.ru/ssh
    • https://FirstVDS.ru/technology/how-to-connect-to-the-server-via-ssh
    • https://www.REG.ru/support/hosting-i-servery/nachalo-raboty-i-dostupy/kak-podklyuchitsya-po-ssh
    [/spoiler]