Как настроить SSH в Linux: руководство для начинающих

Все приведенные далее сведения в основном будет относиться к Raspberry PI 3 и более старшим моделям одноплатников одноименной фирмы.

Применение и возможности PuTTY

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

  • удаленного администрирования;
  • взаимодействия с VPS-серверами.
  • работы с Telnet-терминалами;
  • настройки маршрутизаторов через RS-232;

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

Применение и возможности PuTTY

Возможности программы

  • Сохранение информации и конфигурационных параметров для многократного применения.
  • Работа с SSH-ключами.
  • Поддержка разных версий SSH-протокола.
  • Встроенные клиенты SCP и SFTP, используемые для различных операций с файлами. Возможности первого ограничиваются только функцией копирования.
  • Перенаправление портов через протокол SSH.
  • Поддержка xterm, ECMA-48 и VT-102.
  • Возможность соединения по IPv6.
  • Работа с алгоритмами шифрования.
  • Аутентификация через ключ, который расположен на удаленной машине.
  • Соединение через proxy.
  • Использование порта RS-232.

Установка ssh сервера

Сначала, обновим списки пакетов с помощью команды:

Установка ssh сервера

sudo apt-get update

Установка ssh сервера

Списки пакетов должны обновиться как на скриншоте ниже.

Установка ssh сервера

В Debian SSH-сервер представлен в виде пакета «openssh-server». Чтобы установить OpenSSH в Debian, выполните следующую команду:

Установка ssh сервера

sudo apt-get install openssh-server

Установка ssh сервера

Введите «Y» и нажмите <Enter> для продолжения.

Установка ssh сервера

SSH-сервер установился.

Установка ssh сервера

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

Установка ssh сервера

sudo systemctl status ssh

Установка ssh сервера

Вы должны увидеть статус «active (running)», как показано на скриншоте ниже. Это означает, что сервер SSH работает. Он прослушивает порт 22.

Установка ssh сервера

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

Установка ssh сервера

sudo systemctl start ssh

Установка ssh сервера

Linux Terminal Emulators

Все дистрибутивы Linux предоставляют клиентский интерфейс ssh как часть стандартной установки.

  1. Откройте эмулятор терминала и напишите ssh [email protected] (“ssh» — это команда, root это пользователь OpenWrt, к которому вы подключаетесь, а это светодиод по умолчанию OpenWrt)
  2. появится сообщение о принятии нового ключа от устройства OpenWrt, напишите “yes” и нажмите клавишу “Ввод”.
    1. Если по какой-то причине вы переустановили OpenWrt, у устройства будет другой ключ, и вы получите сообщение о несоответствии ключей. В этой ошибке будет указано, что является командной строкой для копирования-вставки в вашем терминале, чтобы удалить старый ключ и продолжить.
  3. если вы хотите закрыть сеанс, напишите “exit”

Обычно у Linux также есть клиенты SCP (для открытия/редактирования/загрузки/выгрузки файлов в OpenWrt), которые могут быть установлены или не установлены по умолчанию. Вам нужно найти документацию вашего дистрибутива или выполнить поиск с помощью интерфейса управления пакетами для “SCP”, чтобы найти, где он находится, и его текущий статус установки. Прочтите его встроенное руководство (“man scp”, например, для клиента командной строки SCP) или google некоторые учебные пособия, чтобы узнать, как его использовать.

Соединение

Итак, с моментом активации Secure shell на малинке разобрались. Осталось подключиться к ней через сеть и опробовать возможности протокола по управлению консолью Raspberry Pi.

Соединение

Из Linux или MacOS

В составе дистрибутивов Linux или MacOS стандартно идет в поставке утилита «ssh», запуск которой производится из терминалов названых операционных систем. Для присоединения к малинке потребуется знать IP-адрес самого одноплатника в сети. Итак, в целях организации доступа к Raspberry Pi ssh набираем в консоли: ssh [email protected]<ip адрес одноплатника> Ответом будет запрос пароля, который по умолчанию проходится нажатием «Enter». Следом уже откроется командная строка малинки, предоставляя доступ к консоли одноплатника.

Соединение

В том случае, когда стандартное имя пользователя было изменено, новое указывается в продемонстрированной ранее командной строке, вместо «pi». Хотя можно сделать проще, вообще убрав все что написано до «@», с ним включительно, из параметров запуска ssh и ввести логин и пароль (если установлен) непосредственно в высветившееся приглашение «login as:».

Читайте также:  Как в Ubuntu войти как root-пользователь

Из Windows

Соединение

Контроль по протоколу Secure shell из Microsoft Windows производится с использованием сторонней и бесплатной программы «PuTTY». Найти ее достаточно легко, введя название в строку поиска Яндекс или Google и скачав архив, предлагаемый на страницах по высветившимся ссылкам.

Открыв программу (можно от обычного пользователя), для подключения переходят в раздел «Session». Далее, во вкладке окна на экране, ставится выбор переключателя групп «Connection type» в позицию «SSH». Следом заполняется поле «Host Name (or IP-adress)» собственно адресом малинки. «Port» должен быть равен 22. «Saved session» вводится по желанию — потом можно использовать сохраненную информацию методом двух кликов без ручного ввода. Окончательным действием с целью осуществления подключения будет нажатие кнопки «Open», после которого уже высветится присоединенное окно консоли к Raspberry PI с предложением ввести имя пользователя.

WinSCP

Существует клиент без которого практически не обойтись при администрировании сервера. Этот клиент называется WinSCP, он представляет из себя графический клиент для передачи файлов, работающий с протоколами SFTP и SCP.

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

WinSCP

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

WinSCP предназначен для Windows, распространяется под свободной лицензией и является бесплатным. Обладает множеством настроек, русскоязычным интерфейсом и документацией.

Из основных возможностей программы следует выделить следующие:

  • Графический русскоязычный интерфейс
  • Интеграция с Windows (поддержка перетаскивания файлов, поддержка ярлыков)
  • Выполнение всех основных операций с файлами и каталогами
  • Встроенный текстовый редактор
  • Наличие двух пользовательских интерфейсов (Windows Explorer & Norton Commander)
  • Сохранение настроек соединений
  • Автоматизация при помощи скриптов
  • Автоматическая синхронизация каталогов
  • Наличие Portable версий, для работы с переносных носителей
WinSCP

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

Протокол передачи оставьте SFTP. В поле «Имя хоста» введите ip-адрес, порт оставляем по умолчанию 22-ой, вводим имя пользователя и пароль, нажимаем кнопку <Сохранить>.

Задаем название подключения или оставляем предложенное по умолчанию. Отмечаем поля «Запомнить пароль» и «Создать ярлык на рабочем столе», после чего нажимаем <ОК>. Теперь подключение можно запускать с ярлыка на рабочем столе.

На предупреждение о продолжении подключения к неизвестному серверу и добавлении его ключа в кэш, нажимаем <Да>.

WinSCP

Теперь работать с файлами одно удовольствие, можно перетаскивать их мышкой из окна в окно, править файлы текстовыми редакторами, например Notepad++, создавать новые каталоги и т.д.

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

Читайте также:  Btrfs команды. Файловая система Btrfs. Создание файловой системы btrfs

Работа с хостингом из командной строки

Получение справочной информации

Для получения справочной информации по интересующей команде command наберите в командной строке:

man command

для завершения работы со справкой нажмите «q».

Краткую справку по команде обычно можно получить, запустив ее с параметром —help или -h:

command —help

Перемещение по файловой системе

Вывести текущий каталог:

pwd

Перейти в домашний каталог пользователя:

Перейти в каталог tmp, размещенный в текущем каталоге:

cd tmp

Перейти в каталог по полному пути /home/login/ (корневой каталог сайта ):

cd /home/login/

Перейти в родительский каталог (на уровень выше):

cd ..

Перейти в предыдущий каталог:

cd —

Создание и удаление файлов и каталогов

Создать новый каталог foo в текущем каталоге:

mkdir foo

Создать структуру каталогов foo/bar/baz в текущем каталоге:

mkdir -p foo/bar/baz

Удалить каталог foo в текущем каталоге. Каталог должен быть пуст:

rmdir foo

Удалить каталог foo со всеми файлами и подкаталогами:

rm -rf foo

Создать пустой файл foo:

touch foo

Удалить файл foo:

rm foo

Просмотр и редактирование содержимого файлов

Просмотреть содержимое текстового файла (лог-файла сайта) (Для выхода нажмите «q»):

less /var/log/_log

Открыть файл foo в текстовом редакторе:

mcedit foo

Копирование и перемещение файлов

Копировать файл foo в файл bar:

cp foo bar

Скопировать содержимое каталога old в каталог new:

mv old/* new/

Переименовать файл foo в файл bar:

mv foo bar

Переместить файл foo в существующий каталог bar под именем baz:

mv foo bar/baz

Изменение прав доступа

Рекомендуемые права доступа на хостинге для файлов 644 (rw-rw-rw-), для каталогов 755 (rwxr-xr-x).

Сделать файл foo исполняемым:

chmod 755 foo

Сделать файл foo доступным только для чтения:

chmod 444 foo

Изменение прав доступа для всех каталогов, вложенных в каталог foo на 755:

find foo -type d -exec chmod 755 {} \;

Изменение прав доступа для всех вложенных в каталог foo файлов на 644:

find foo -type f -exec chmod 644 {} \;

Управление процессами

Показать информацию о процессах в реальном времени (Для выхода нажмите «q»):

top

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

ps auxww

Завершить работу процесса по его идентификатору процесса (PID) 1234:

kill 1234

Завершить работу процесса по его имени:

killall apache2

Работа с архивами

Создать архив каталога docs:

tar -czf docs

Распаковать архив :

tar -xzf

Распаковать архив :

unzip

Распаковать архив :

unrar x

Распаковать архив :

gunzip

Поиск файлов

Найти среди файлов сайта содержащие текст «» (адрес сервера для доступа к базе данных):

grep -R «»

Найти в текущем каталоге и подкаталогах файлы с именем :

find . -name

Подключение к Linux через SSH

Наряду с правильным IP-адресом у вас также должны быть имя пользователя и пароль для доступа к удаленному компьютеру.

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

ssh [email protected]

Обязательно замените имя пользователя фактическим именем пользователя, а — IP-адресом удаленного устройства. Нажмите Enter, и вам будет предложено ввести пароль.

Подключение к Linux через SSH

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

Используете настольный клиент SSH, например PuTTY?

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

Ограничения SSH на процедуру подключения к сеансу

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

Читайте также:  Apple выпустила вторую бета-версию iOS 11.2.5

Блок наших настроек про всё это будет выглядеть так:

RhostsRSAAuthentication no PubkeyAuthentication no HostbaseAuthentication no ChallengeResponseAuthentication no KerberosAuthentication no PasswordAuthentication yes LoginGraceTime 15 ClientAliveInterval 1800 ClientAliveCountMax 0 MaxAuthTries 3 MaxSessions 1 PermitTunnel no MaxStartups 10:50:20 ShowPatchLevel no

Разберёмся, что и как.

Блок из RhostsRSAAuthentication no, PubkeyAuthentication no, HostbaseAuthentication no, ChallengeResponseAuthentication no, KerberosAuthentication no отключает неиспользуемые методы аутентификации. Безусловно, если вы используете для входа на SSH-сервер, допустим, Kerberos, то отключать Kerberos не нужно. Но в типовом сценарии, когда вход осуществляется более распространёнными способами, лишнее надо в явном виде отключать.

Параметр LoginGraceTime говорит о том, сколько времени пользователю можно потратить на процедуру входа. По умолчанию – 2 минуты. Это очень много. Очень медленный пользователь должен быть, чтобы столько времени ему требовалось на вход. Поэтому этот параметр выставляется в 15 – за 15 секунд войти можно. Если надо дольше – можно увеличить, но разумно. Важнее то, что сервер будет быстрее “сбрасывать” сессии, которые начались, но ещё не завершили аутентификацию, и экономить ресурсы.

Аналог LoginGraceTime в Cisco IOS – это команда atraining(config)#ip ssh time-out, задающая максимальное время для процедуры входа. По умолчанию также 2 минуты и это также многовато и надо уменьшать. В случае с Cisco NX-OS это будет atraining-nx(config)#ssh login-gracetime.

Пара настроек ClientAliveCountMax и ClientAliveInterval будет нужна, чтобы определять, когда надо отключать неактивного клиента. ClientAliveInterval – время неактивности в секундах, через которое клиента отключат, а ClientAliveCountMax – количество попыток “разбудить” клиента. В нашем случае клиента отключат через полчаса неактивности.

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

Аналог MaxAuthTries в Cisco IOS – команда atraining(config)#ip ssh authentication-retries, с умолчанием в 3 попытки.

Параметр MaxSessions показывает, сколько сессий внутри одного SSH-подключения можно инициализировать. Это не ограничение на “параллельные сессии с одного хоста”! Это именно “поставил SSH-трубу до сервера и внутри неё мультиплексируешь много сессий с форвардингом данных”. Если вам такой сценарий не нужен – когда подключаетесь до сервера X и через него форвардите трафик вглубь сети, то хватит и единицы – а надо именно подключаться к конкретному серверу и его администрировать, то MaxSessions 1, да. Параметр PermitTunnel no будет довершать конфигурирование режима “ssh только для администрирования сервера, к которому подключаемся”.

MaxStartups 10:50:20 – это WRED-подобный механизм, про семейство которых обсуждается на курсах по QoS и логика его конфигурирования будет следующей – первое и последние значения – это стартовое количество подключений (речь только про подключения, которые не прошли аутентификацию), начиная с которых механизм начнёт работать и максимальное количество подключений, возможных вообще (в нашем случае механизм включится, когда к серверу будет 10 подключений, а 21е подключение будет технически невозможно), а средний параметр – это вероятность в процентах. У нас она 50, т.е. мы будем отказывать в половине случаев, когда количество “висящих на фазе аутентификации” сессий будет от 10 до 20.

Можно сделать и проще – например, MaxStartups 10, т.е. задать MaxStartups с одним параметром. Это просто укажет максимальное число параллельно аутентифицирующихся сессий.

Аналог MaxStartups N с одним параметром в Cisco IOS – это команда atraining(config)#ip ssh maxstartups N, где N – то же самое максимальное число параллельно аутентифицирующихся сессий.

Командой ShowPatchLevel no мы выключим публикацию детальной информации о версии SSH подключающемуся клиенту.

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