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

Что такое SSH?

Переводится дословно как «безопасная оболочка». В использовании 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. Является самой распространенной версией благодаря свободному распространению.

Пакет 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. В настройках по умолчанию установлен 22. Для безопасности рекомендуется заменять его нестандартным значением, например, 5754. Изменить директиву Port можно командой:

5. Сохраните файл/etc/ssh/sshd_config и перезапустите SSHD:

Сервер установлен и настроен. Теперь он прослушивает порт 5754. По умолчанию получить доступ может любой пользователь системы с правами на вход. Аутентификация производится с помощью пароля или ключей DSA, RSA, ed25519 и др.

Кросплатформенный OpenSSH-client для терминала. SSH клиент для Linux

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

В составе пакетов OpenSSH-клиент реализован в виде программы SSH, которая запускается одноименной командой. Настройка и управление клиентом производится через терминал, он не имеет графического интерфейса. Считается самой простой и удобной версией.

Установка и настройка OpenSSH-client на Ubuntu

На удаленной машине имеется установленный и сконфигурированный OpenSSH-server. Задача состоит в том, чтобы получить к нему доступ с локального компьютера, на котором установлена Ubuntu.

1. В Ubuntu по умолчанию не добавлен дистрибутив OpenSSH-client, поэтому установить его необходимо командой:

2. После она вызывается командой SSH из терминала без Root.

3. В случае если используется аутентификация пользователей по паролю:

1) подключение производится командой:

  • username — имя учетной записи на удаленной машине,
  • host — это IP-адрес удаленного сервера (или домен, если домен был делегирован на сервер);

2) после ввода команды необходимо нажать Enter - появится запрос на ввод пароля; требуется ввести пароль от учетной записи удаленной машины (следует быть внимательным, так как для безопасности ввод пароля никак не отображается);

3) после правильного ввода пароля появляется окно терминала удаленного сервера с приветствием; теперь можно выполнять необходимые команды.

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 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. Он имеет весь необходимый набор инструментов для туннелирования, копирования файлов и так далее, пусть для этого потребуется скачивание дополнительных модулей.

" Вы начинающий админ и хотите, например, поднять свой веб сервер. Идете в интернет, находите подходящую Вам статью и вперед! Давайте обратим внимание на один Важный момент, практически во всех этих статьях дается минимум команд для запуска необходимых служб и сервисов. Хорошо - заработало! А все ли Вы сделали для того, чтобы работать не перестало? Используете SSH через интернет? Почему никто в своих статьях не освещает проблем, которые могут получить новоиспеченные админы с таким подходом к настройке сервера, ведь именно для новичков и написаны статьи. Для того, чтобы Вы вовремя обратили внимание на вопрос безопасности, я обязательно буду делать пометки и ссылки в своих статьях на данный материал. Предупрежден – вооружен! "

Итак, SSH (secure shell) – безопасный сервер терминалов, предоставляет удаленный доступ к системе. Безопасный, т.к. весь трафик между клиентом и сервером шифруется. А так ли он безопасен с настройками по умолчанию? Если Вы имеете сервер с возможностью подключения по SSH через интернет, обязательно найдутся желающие подобрать пароль для входа. Думаю, не стоит объяснять, что возможный злоумышленник сможет получить практически неограниченный доступ к системе.

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

Установка SSH сервера в Ubuntu.

Установка SSH сервера в Ubuntu выполняется следующей командой:

Sudo apt-get install ssh openssh-server

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

Sudo service ssh stop | start | restart

Основной файл конфигурации SSH - сервера - файл /etc/ssh/sshd_config , доступный для чтения или редактирования только супер пользователю (root). Для применения изменений необходимо перезапустить ssh-сервер.

Настройки безопасности SSH сервера.

Протокол по умолчанию.

Опять же в современных дистрибутивах по умолчанию реализуется протокол SSH2. Если в Вашем случае указано нечто вроде:

Protocol 2,1

Необходимо оставить только 2:

Protocol 2

Использование небезопасного протокола SSH1 не рекомендуется.

По умолчанию в последних релизах Ubuntu, доступ пользователя root через SSH ограничен.

PermitRootLogin without-password

PermitRootLogin no

С такими настройками пользователь root не сможет авторизоваться по SSH.

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

Еще немного о root в Ubuntu, созданный по умолчанию пользователь (при установке системы) может решать все административные задачи через sudo. Активировать пользователя root для доступа к системе мне кажется не обоснованным решением.

Предоставление доступа только указанным пользователям или группам.

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

AllowUsers user1 user2

Также Вы можете указать необходимую группу, например administrators:

AllowGroups administrators

Запретите доступ с "пустыми" паролями.

Вы должны явно запретить удаленный доступ с использованием пустых паролей:

PermitEmptyPasswords no

Изменение стандартного порта.

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

Изменим, к примеру, на:

Port 2220

Стоит понимать, что изменение порта никак не поможет Вам при целенаправленной атаке brute-force (подбор пароля). Злоумышленник может, например, пройтись сканером портов по IP адресу, на котором распложен Ваш сервер, в результате он получит список всех открытых портов.

Также помните, что теперь для подключения к серверу помимо IP адреса Вам нужно указать и номер порта.

Действительно рабочим вариантом защиты от перебора является использование для аутентификации SSH2 RSA-ключей. При таком способе пользователь генерирует пару ключей, из которой один ключ является секретным, а другой публичным. Публичный ключ находится на сервере и служит для проверки идентичности пользователя. Плюс ко всему связку ключ – публичный ключ можно обезопасить парольной фразой, повысив криптостойкость авторизации. Логика проста, не используете для авторизации пароль – подбирать нечего!

Заходим в систему под тем пользователем, которому будем настраивать доступ по SSH к серверу.

Сгенерируем RSA ключ длинной 4096, Вам будет предложено указать место хранения, оставим по умолчанию (/home/UserName/.ssh/id_rsa), также будет предложено задать пароль на создаваемый ключ. Если пароль не указывать, то во время аутентификации на сервере по сертификату вводить его не придется, это менее надежно. Рекомендую Вам указать пароль:

Ssh-keygen -t rsa -b 4096

В указанной директории будет создана пара ключей:

id_rsa.pub - публичный

id_rsa – приватный

Проверим, созданы ли файлы:

Cd ~/.ssh ls -al

Установим права на папку и файлы:

Sudo chmod 0700 ~/.ssh/ sudo chmod 0600 ~/.ssh/id*

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

Ключ id_rsa передается клиенту:

/home/UserName/.ssh/id_rsa

После чего удаляется с сервера:

Sudo rm /home/UserName/.ssh/id_rsa

Создадим файл authorized_keys (находимся в системе под тем же пользователем “UserName”, для которого создавался сертификат) и скопируем в него содержимое файла id_rsa.pub , определим владельца и выставим права на директорию и файл.

Cd ~/.ssh sudo touch authorized_keys sudo chown UserName:UserName authorized_keys sudo cat id_rsa.pub >> authorized_keys sudo chmod 0700 ~/.ssh/ sudo chmod 0600 ~/.ssh/authorized_keys

Проверим, что текст скопировался:

Sudo cat /home/UserName/.ssh/authorized_keys

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

Sudo rm /home/UserName/.ssh/id_rsa.pub

Sudo nano /etc/ssh/sshd_config

Необходимо раскоментировать строки и выставить параметры следующим образом:

# разрешаем авторизацию при помощи ключей PubkeyAuthentication yes # Путь, где будут находиться ключи, с которыми можно соединяться для каждого пользователя свой файл в его директории. AuthorizedKeysFile %h/.ssh/authorized_keys

Перезапустим SSH сервер:

Sudo service ssh restart

После того, как Вы сформировали сертификаты для всех пользователей (кому необходим доступ по SSH), рекомендую Вам отключить аутентификацию по паролю, отредактировав все тот же файл /etc/ssh/sshd_config

Внимание перед отключением аутентификации по паролю убедитесь в возможности доступа по ключу

PasswordAuthentication no Подключение к SSH серверу через PuTTY, используя сертификат.

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

Для этого нам потребуется программа PuTTYgen .

Загружаем файл приватного ключа "Conversions - Import Key ".

Если Вы установили, пароль вводим его.

Выбираем "Save private key " и сохраняем полученный ppk файл. Хранить его стоит в месте, где он не сможет быть скомпрометирован.

Открываем программу PuTTY и настраиваем соединение:

Session - Host Name (or IP Address) IP адрес хоста, на котором настраивался SSH Сервер;

Session - Port Порт, указанный в настройках SSH сервера;

Session - Saved Session Название сессии (соединения);

Connection - Data - Autologin username Имя пользователя;

Connection - SSH - Auth - Private key file for authentication Путь к ppk файлу;

Session - Save Сохраняем сессию;

Session - Saved Session (выбираем нашу сессию) - Load - Open - Сессия должна запуститься;

Вводим пароль и нажимаем Enter, после этого попадаем в систему.

В случае если сертификат пользователя был скомпрометирован, выполняем отзыв сертификата и запрещаем доступ пользователю.

Для того, чтобы закрыть доступ пользователю UserName к Хосту по сертификату, перейдем в папку где хранится его сертификат:

Cd ~/.ssh

Удалим файл его публичного сертификат authorized_key с сервера OpenSSH, если же вы неосмотрительно не удаляли файлы id_rsa.pub и id_rsa , удалите их. Просматриваем содержимое каталога коммандой "ls".

Удаляем необходимые файлы:

Sudo rm authorized_key id_rsa.pub id_rsa

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

В примере ниже это время ограничено до 30 секунд:

LoginGraceTime 30

Таймаут при отсутствии активности соединения.

Автоматическое отключение соединения после определенного времени, в течение которого зафиксировано бездействие в консоли.

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

ClientAliveInterval – Параметр указывает на время ожидания в секундах. По истечению ssh-сервер отошлет сообщение-запрос клиенту. По умолчанию значение этого параметра – 0. Сервер не отсылает сообщение для проверки.

Отключение ssh-клиента автоматически после 5 минут (300 секунд):

ClientAliveInterval 300 ClientAliveCountMax 0

Итак, в Интернете, понятное дело, что есть огромное количество примеров установки SSH, но вот незадача-то 🙂 не везде описаны все детали, и порой новичку в данной ситуации ой как нелегко приходится, сам на себе это испытал… Итак, вот полное и подробное до мельчайших деталей описание установки великого и могучего SSH.

Сначала установим SSH на машине на которую планируем подсоединяться. Для этого в консоли (командной строке, терминале) введём команду:

sudo apt-get install openssh-server

После этой команда автоматически найдётся и установится SSH (конечно же необходимо подсоединение к великому и могучему Интернету). Затем необходимо произвести настройку. Вся конфигурация нашего сервера производиться изменением файла /etc/ssh/sshd_config . Но для начала, я бы порекомендовал сделать резервную копию исходного конфигурационного файла. Для этого пишем:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original

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

sudo nano /etc/ssh/sshd_config

Вы увидите следующие директивы:

  • Port 22 — указывает порт по которому сервер будет ожидать входящего соединения. Например, Port 1234 означает что к серверу можно будет подключиться по порту 1234. Но стандартный — 22 порт, хотя я рекомендовал бы его сменить, так как именно с него и начинают попытки взлома сервера «недоброжелательные личности Интернет просторов».
  • PermitRootLogin no — лучше установите в значение no . Этим самым Вы запретите логиниться под рутом.
  • ListenAddress — указывает какой протокол/интерфейс будет прослушиваться ssh.
  • Protocol — позволяет выбрать версию протокола 1 или 2. Рекомендуется протокол 2.
  • HostKey — ключевые файлы для второй версии протокола SSH
  • PermitEmptyPasswords no — запретить пустые пароли, надёжность не помешает.
  • UsePrivilegeSeparation — лучше оставить включенным для безопасности.
  • AllowUsers Goodboy — этого параметра нет в конфиге, советую дописать. Goodboy — имя вашего юзера (он у каждого конечно же свой, это просто пример). Этот параметр устанавливает разрешение логинится только и только с этим именем, ssh пробивают не только на предмет пароля, но и на предмет системных или стандартных имен. К примеру apache, www, которые по каким-то причинам могут оказаться беcпарольными, или andy, bobby, anna и тп. К имени Goodboy можно добавить ip-адрес — [email protected] — если вы уверены, что на клиентской машине всегда именно этот не меняющийся адрес. Такой параметр разрешит логинится только пользователю Goodboy и только при условии, что его хост совпадает с заданным. В принципе это конечно же не обязательно, но пять же, дополнительная защита не помешает.

Перенастраиваем те настройки которые вам нужны дополнительно, затем нажимаем кнопку F3 для сохранения и затем Enter для подтверждения и F2 для выхода в консоль обратно.

Затем перезагружаем SSH демон:

sudo /etc/init.d/ssh restart

Затем мы можем к нему подсоединяться. Как правило, сервер — на Linux стоит, а рабочие машины как правило на Windows, то и подсоединяться к серверу будем через ОС Windows. Для этого на машине с которой планируем подключаться устанавливаем 2 програмки: Putty — для доступа к командной строке сервера, WinSCP — для более удобных стандартных операций копирования, удаления, перемещения, создания папок на сервере и так далее. Последняя программа своим интерфейсом напоминает аналог Total commander, Far manager и подобные им программы. На самом же деле можно использовать не только WinSCP, но и вышеперечисленные программы, а так же FileZilla и прочие, но легче, удобнее, и менее проблемнее в настройке и работе, на мой взгляд текущая программа. Итак, для подсоединения необходимо всего навсего указать порт к которому хотим подсоединиться, по умолчанию 22 если Вы его не изменили, а затем имя хоста или его IP адресс. Так как сервера, как правило ставятся на статические IP то в этом нет никаких проблем.


Для установки ssh-сервера выполните в терминале:

Ubuntu/Debian/Linux Mint

Затем отредактируйте настройки ssh-сервера в файле /etc/ssh/sshd_config
Для этого в терминале выполните:


Также для того чтобы OpenSSH слушал только определенные ip адресса, допустим 192.168.0.50, 192.168.0.51 на порту 777, то просто добавьте следующие строчки:

Ограничить доступ через SSH для пользователей: test test2 test3

OpenSSH сервер может использовать протокол Rlogin для авторизации и может имитировать поведение устаревшей комманды rsh, по этому отключите чтение пользовательских файлов ~/.rhosts и ~/.shosts:

Включите предупреждающий баннер отредактировав следующую строку и создания соотв. файла:

Сохраняйте логи, удостоверьтесь что директива LogLevel имеет значение INFO или DEBUG

Чтобы перезапустить OpenSSH на CentOS, Fedora или RHEL:

В некоторых случаях, запустить сервер можно только таким способом:


Для проверки статуса сервера используем следующую команду


Теперь на компьютер с установленным OpenSSH-server можно зайти так:

Ssh [-p port]

Например:

CentOS / RHEL / Fedora Linux - отключить или удалить OpenSSH можно так:

$ chkconfig sshd off
$ yum erase openssh-server

Основные файлы и папки SSH:
~/.ssh/ - пользовательские конфигурационные директории
~/.ssh/authorized_keys и ~/.ssh/authorized_keys2 - списки публичных ключей (RSA или DSA), которые могут быть использованы для авторизации в пользовательский аккаунт
~/.ssh/known_hosts - ключи серверов
/etc/ssh/sshd_config - конфигурационный файл сервера OpenSSH
/etc/ssh/ssh_config - конфигурационный файл клиента OpenSSH
/etc/nologin - если этот файл существует, то система будет отказываться пускать кого-либо кроме root-пользователя. Лучше удалить и не использовать.
/etc/hosts.allow и /etc/hosts.deny - списки контроля доступа (ACL)

This section of the Ubuntu Server Guide introduces a powerful collection of tools for the remote control of, and transfer of data between, networked computers called OpenSSH . You will also learn about some of the configuration settings possible with the OpenSSH server application and how to change them on your Ubuntu system.

OpenSSH is a freely available version of the Secure Shell (SSH) protocol family of tools for remotely controlling, or transferring files between, computers. Traditional tools used to accomplish these functions, such as telnet or rcp , are insecure and transmit the user"s password in cleartext when used. OpenSSH provides a server daemon and client tools to facilitate secure, encrypted remote control and file transfer operations, effectively replacing the legacy tools.

The OpenSSH server component, sshd , listens continuously for client connections from any of the client tools. When a connection request occurs, sshd sets up the correct connection depending on the type of client tool connecting. For example, if the remote computer is connecting with the ssh client application, the OpenSSH server sets up a remote control session after authentication. If a remote user connects to an OpenSSH server with scp , the OpenSSH server daemon initiates a secure copy of files between the server and client after authentication. OpenSSH can use many authentication methods, including plain password, public key, and Kerberos tickets.

Installation

Installation of the OpenSSH client and server applications is simple. To install the OpenSSH client applications on your Ubuntu system, use this command at a terminal prompt:

sudo apt install openssh-client

To install the OpenSSH server application, and related support files, use this command at a terminal prompt:

sudo apt install openssh-server

The openssh-server package can also be selected to install during the Server Edition installation process.

Configuration

You may configure the default behavior of the OpenSSH server application, sshd , by editing the file /etc/ssh/sshd_config . For information about the configuration directives used in this file, you may view the appropriate manual page with the following command, issued at a terminal prompt:

man sshd_config

There are many directives in the sshd configuration file controlling such things as communication settings, and authentication modes. The following are examples of configuration directives that can be changed by editing the /etc/ssh/sshd_config file.

Prior to editing the configuration file, you should make a copy of the original file and protect it from writing so you will have the original settings as a reference and to reuse as necessary.

Copy the /etc/ssh/sshd_config file and protect it from writing with the following commands, issued at a terminal prompt:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original sudo chmod a-w /etc/ssh/sshd_config.original

The following are examples of configuration directives you may change:

    To set your OpenSSH to listen on TCP port 2222 instead of the default TCP port 22, change the Port directive as such:

    To have sshd allow public key-based login credentials, simply add or modify the line:

    PubkeyAuthentication yes

    If the line is already present, then ensure it is not commented out.

    To make your OpenSSH server display the contents of the /etc/issue.net file as a pre-login banner, simply add or modify the line:

    Banner /etc/issue.net

    In the /etc/ssh/sshd_config file.

After making changes to the /etc/ssh/sshd_config file, save the file, and restart the sshd server application to effect the changes using the following command at a terminal prompt:

sudo systemctl restart sshd.service

Many other configuration directives for sshd are available to change the server application"s behavior to fit your needs. Be advised, however, if your only method of access to a server is ssh , and you make a mistake in configuring sshd via the /etc/ssh/sshd_config file, you may find you are locked out of the server upon restarting it. Additionally, if an incorrect configuration directive is supplied, the sshd server may refuse to start, so be extra careful when editing this file on a remote server.