Доступ по ssh под root

Доступ по ssh под root Техника

Тематические термины: SSH, Linux, Ubuntu.

По умолчанию, в некоторых системах Linux (например, Ubuntu) для суперпользователя root вход по SSH с использованием пароля не работает. При попытке подключиться можно увидеть сообщение «access denied» или «permission denied». Такая настройка необходима для обеспечения большей безопасности системе. Однако, если требуется предоставить возможность подключаться по SSH от пользователя root, необходимо выполнить нижеописанное.

* Инструкция подойдет для большинства UNIX-систем.

По сертификату
С использованием пароля

Содержание
  1. С использованием сертификата
  2. По паролю
  3. Описание
  4. Разрешаем root доступ по SSH с вводом пароля
  5. Включить вход в систему с правами root
  6. Применение корневых настроек
  7. Отключить root-вход
  8. Копируем ключи ssh на сервер
  9. Установка Openssh-сервера в Debian 10
  10. Настройка root доступа по ssh в Debian 10
  11. Оглавление
  12. Как настроить SSH сервер (sshd)
  13. Перезапуск службы SSH
  14. Как изменить порт, на котором работает сервер OpenSSH
  15. Как выбрать интерфейс (IP) для прослушивания
  16. Почему пользователь root не может подключиться по SSH с верным паролем. Как запретить или разрешить подключение root по SSH
  17. Запрет и разрешение входа в SSH по паролю обычным пользователям
  18. Разрешение входа без пароля
  19. Как разрешить или запретить пользователям входить через SSH
  20. Как разрешить подключение только с определённого IP или группы IP. Как заблокировать определённые IP для SSH
  21. Настройка журналов SSH сервера
  22. Запуск SSH без отсоединения от терминала
  23. Запуск сервера SSH с другим конфигурационным файлом
  24. Как проверить конфигурационный файл сервера SSH без запуска службы
  25. Другие важные опции командной строки сервера SSH
  26. Другие опции sshd
  27. Базовый синтаксис
  28. Настройка сервера SSH
  29. Порт ssh
  30. Протокол SSH
  31. Рут доступ
  32. Доступ только определенного пользователя к SSH
  33. Выполнение X11 приложений
  34. Использование SSH
  35. Подключение к серверу
  36. Выполнить команду
  37. Выполнить локальный скрипт
  38. Бекап на удаленный сервер и восстановление
  39. Аутентификация без пароля
  40. Взять пароль из локального файла
  41. Изменить приветствие SSH
  42. Смотрим неудачные попытки входа SSH
  43. Передача файлов по SSH
  44. Запуск графических приложений по ssh
  45. Завершение сессии SSH
  46. Туннели SSH
  47. Выводы

С использованием сертификата

Система настроена таким образом, чтобы можно было подключиться под пользователем root с использованием сертификата. Рассмотрим, как это сделать.

На любом компьютере с Linux сгенерируем пару ключей командой:

В домашней директории:

ls -l ~/.ssh/

Идем на наш целевой компьютер Ubuntu. Создаем каталог:

Вставляем в него содержимое файла id_ed25519.pub.

Теперь с компьютера, где были созданы сертификаты можно зайти на компьютер с Ubuntu:

Теперь с использованием ключа из файла id_ed25519 можно подключиться к нашему компьютеру Ubuntu без пароля.

По паролю

Для начала, необходимо создать пароль пользователю root следующей командой:

После нажатия Enter вводим дважды пароль.

Теперь открываем настройки SSH:

и редактируем параметр PermitRootLogin — задаем значение yes:

Перезапускаем ssh server:

или в старых версиях без systemd:

Доступ по ssh под root

Была ли полезна вам эта инструкция?

Доступ по ssh под root

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

Описание

В последних версиях Ubuntu, например, доступ для пользователя root — отключен, как впрочем и сама учетная запись root. Чтобы это изменить, необходимо внести правки в конфигурационный файл ssh, который обычно расположен по следующему пути: /etc/ssh/sshd_config

Разрешаем root доступ по SSH с вводом пароля

Первым делом ищем в конфигурационном файле строчку PermitRootLogin, скорей всего она будет закомментирована символом #. Для примера в Ubuntu 18.04.3 эта строчка имеет следующий вид:

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

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

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

sudo service sshd reload

Теперь можно попробовать зайти на сервер через ssh под учетной записью root и введя его пароль.

По умолчанию в Linux Debian для суперпользователя root подключение к серверу по SSH не разрешен.

Доступ по ssh под root

Если попробовать авторизоваться рутом, то, скорее всего, отобразится сообщение, что доступ не разрешен:

Запрет подключения к серверу по SSH пользователю root обусловлен требованием безопасности, но иногда все-таки нужно поработать именно рутом, для этого можно ВРЕМЕННО разрешить ему подключаться по SSH.

Это можно сделать следующим образом:

1. Создать пользователю root пароль (если нет) с помощью следующей команды:

Нажать Enter и ввести пароль 2 раза (консоль об этом напишет).

2.Открыть с помощью любого текстового редактора файл с настройками SSH, например, с помощью редактора VIM (VI):

И для параметра PermitRootLogin изменить значение с no на yes:

Иногда параметр PermitRootLogin закомментирован, соответственно, нужно его раскоментировать.

Сохранить изменения в файле.

В некоторых случаях параметр PermitRootLogin может иметь значение without-password или prohibit-password — это значит, что root разрешено подключаться средствами GSSAPI (не парольной аутентификации), например, с помощью смарт-карты или отпечатка пальца (это, конечно же, редкость).

3. Перезапустить ssh server командой:

(если не помогает, перезапустить сервер полностью 🙂

После этого пользователь root сможет подключиться по SSH.

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

Чтобы было ясно, включение входа в систему Root через SSH опасно. Не делайте этого, если вы новичок в SSH!

Первым шагом к включению входа в систему с правами root через SSH является включение учетной записи Root. Для многих дистрибутивов Linux (Ubuntu и ему подобных) Root не активен в целях безопасности. Вместо этого пользователи делают все через привилегии sudo. По большей части не использовать учетную запись Root — это нормально, и sudo справится с этой задачей. Однако при использовании SSH пользователям необходимо знать пароль root.

Сначала войдите на свой удаленный сервер / ПК, на котором вы хотите удаленно включить Root over SSH:

Если вы настроили свой дистрибутив Linux и не настраивали пользователя Root, вам необходимо выполнить следующие шаги, чтобы настроить Root. Пожалуйста, поймите, что этот процесс не будет работать без пользователя, который может использовать sudo. Для начала откройте терминал. В терминале запустите:

Использование sudo с -s предоставит пользователю оболочку Root, как и вход в систему с помощью su. Отсюда можно вызвать команду «новый пароль» для пользователя Root.

Запуск passwd предложит пользователю указать «новый пароль UNIX». Введите новый пароль для учетной записи Root на вашем ПК. В целях безопасности не используйте тот же пароль для Root, что и для вашей обычной учетной записи. Обязательно создайте безопасный, но запоминающийся пароль для учетной записи.

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

Наконец, убедитесь, что новый пароль Root работает, войдя в него через su.

Включить вход в систему с правами root

Примечание. Не хотите удаленно изменять свой SSH-сервер? Измените его локально, а не в терминале.

Мы подключены (удаленно) через SSH к серверу SSH. Затем повысите обычное соединение до Root-доступа, войдя в систему через su.

Затем, используя текстовый редактор Nano, откройте файл конфигурации SSH-сервера.

Просмотрите файл конфигурации, найдите «PermitRootLogin». Перед ним может стоять «нет». В этом случае измените «нет» на «да».

В других случаях SSH «PermitRootLogin» может сказать «запретить пароль». Удалите «запретить-пароль» и измените его на «да».

После изменения настроек Root для SSH-сервера вам необходимо сохранить изменения конфигурации. Изменения конфигурации сохраняются в Nano при нажатии комбинации клавиш Ctrl + O. Закройте редактор Nano, нажав Ctrl + X, когда конфигурация сохранится правильно.

Дополнительно:  Easily Root LG Devices using the One-Click Root Script

Применение корневых настроек

Теперь, когда в настройках включен вход в систему с правами root, вам необходимо перезапустить демон SSH, чтобы применить изменения. На большинстве компьютеров с Linux это легко сделать с помощью systemd. В терминале получите root-доступ с помощью su или sudo:

После получения root используйте systemd для перезапуска демона SSH.

systemctl restart sshd

Не использовать systemd? Вместо этого попробуйте эту команду:

service ssh restart

Если ни одна из команд не работает для перезапуска демона SSH, надежный способ — просто перезапустить сервер, на котором запущен SSH:

Отключить root-вход

Доступ по ssh под root

Больше не хотите входить в систему через SSH? К счастью, эту функцию так же легко отключить, как и включить. Первый способ — просто заблокировать учетную запись Root. Выполнение этого способа позволяет включать и выключать параметр на лету, разблокировав учетную запись Root. Чтобы заблокировать Root, получите оболочку суперпользователя через sudo и запустите:

passwd —lock root

Эта команда шифрует учетную запись root и фактически отключает ее. Чтобы вернуть его для использования с Root over SSH, следуйте инструкциям в верхней части статьи.

В качестве альтернативы, чтобы полностью отключить вход в систему Root, откройте терминал (с Root):

В файле конфигурации SSH найдите «PermitRootLogin» и измените его с «да» на «нет».

Нажмите Ctrl + O, чтобы сохранить, выйдите, нажав Ctrl + X, а затем перезагрузитесь. После сброса вход в систему Root работать не будет.

ssh-keygen -t rsa

Ну а теперь переходим на сервер и редактируем конфигурационный файл ssh. Этот конфигурационный файл расположен в каталоге etc/ssh/sshd_config. Для редактирования вводим следующую команду:

Тут нам нужно найти пункт “PermitRootLogin” и отредактировать его. По умолчанию этот пункт имеет значение “without-password или prohibit-password”. А так же он закоментирован, давайте сначала его раскоментируем. После чего приведем его к следующему виду:

Теперь сохраняем отредактированный файл и перезапустим службу ssh. Сделать это можно с помощью команды

Копируем ключи ssh на сервер

Ну а теперь самое время запретить вход по паролю. Для этого нужно отредактировать файл sshd_config. Заменив в нем пункт PasswordAuthentication yes на no, а так же его раскоментировав:

После чего нам нужно снова перезапустить службу ssh командами:

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

Доступ по ssh под root

Доброго времени суток, уважаемые читатели. Сегодня статья на тему: «Установка SSH и Root доступ в Debian 10». Рассмотрим установку OpenSSH-сервера, и настройку удалённого доступа под пользователем root.

В процессе установки Debian 10, не производится установки SSH-сервера. Поэтому сразу после установки, нет возможности удалённого подключения.

Установка Openssh-сервера в Debian 10

# apt-get install openssh-server

Настройка root доступа по ssh в Debian 10

# su —

PermitRootLogin yes

# systemctl restart ssh

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

Надеюсь статья была вам полезна. До встречи в новых статьях.

Видео на тему «Установка SSH и Root доступ в Debian 10»:

Поблагодарить автора за полезную статью:

Доступ по ssh под root

Оглавление

Содержание «Полное руководство по SSH в Linux и Windows»

1. Что такое SSH. Утилиты SSH

2. Настройка сервера OpenSSH

2.1 Как настроить SSH сервер (sshd)

2.2 Перезапуск службы SSH

2.3 Как изменить порт, на котором работает сервер OpenSSH

2.4 Как выбрать интерфейс (IP) для прослушивания

2.5 Почему пользователь root не может подключиться по SSH с верным паролем. Как запретить или разрешить подключение root по SSH

2.6 Запрет и разрешение входа в SSH по паролю обычным пользователям

2.7 Разрешение входа без пароля

2.8 Как разрешить или запретить пользователям входить через SSH

2.9 Шаблоны в файле настроек SSH

2.10 Как разрешить подключение только с определённого IP или группы IP. Как заблокировать определённые IP для SSH

2.11 Настройка журналов SSH сервера

2.12 Запуск SSH без отсоединения от терминала

2.13 Запуск сервера SSH с другим конфигурационным файлом

2.14 Как проверить конфигурационный файл сервера SSH без запуска службы

2.15 Другие важные опции командной строки сервера SSH

2.16 Другие опции sshd

3. Как подключиться к SSH. Настройка клиента OpenSSH

4. Создание и настройка ключей OpenSSH

5. Копирование файлов с помощью scp и sftp

6. Подсказки и сложные случаи использования OpenSSH

Как настроить SSH сервер (sshd)

Служба sshd считывает настройки из конфигурационного файла /etc/ssh/sshd_config. Этот файл содержит пары «ключевое слово — аргумент», одна пара на одной строке. Для каждого ключевого слова будет использовано первое полученное значение (исключение составляют несколько директив, которые можно использовать несколько раз, и каждого значение будет учтено, например это Port и ListenAddress).

Доступ по ssh под root

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

Ключевые слова не чувствительны к регистру, а аргументы чувствительны к регистру.

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

Дополнительно можно указать опции командной строки — они имеют приоритет над настройками в конфигурационном файле.

Перезапуск службы SSH

Если между sshd.service и sshd.socket (подробности в разделе «Управление службой OpenSSH») вы выбрали запуск sshd.service, то чтобы внесённые в конфигурационный файл изменения вступили в силу, необходимо перезапустить службу:

sudo systemctl restart sshd.service

Для sshd.socket перезапуск службы требуется только при изменении номера порта (как это показано ниже) и делается так:

sudo systemctl restart sshd.socket

Как изменить порт, на котором работает сервер OpenSSH

Все настройки выполняются в файле /etc/ssh/sshd_config или в строке команды запуска sshd.

Для sshd.socket смена прослушиваемого службой порта происходит иначе.

Если вы используете sshd.service (объяснения в первой части), то смена порта также происходит в файле /etc/ssh/sshd_config. Для этого раскомментируйте директиву Port и укажите новое значение:

Опцию Port разрешено использовать несколько раз.

Также порт можно установить с помощью ListenAddress.

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

sudo systemctl edit sshd.socket

Там можно указать только порт:

А также IP и порт:

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

Для sshd.socket другие настройки, как обычно, в файле /etc/ssh/sshd_config. Но директивы Port и ListenAddress будут игнорироваться (если выбрано прослушивание сокета).

Как выбрать интерфейс (IP) для прослушивания

В системе может быть несколько сетевых интерфейсов с несколькими IP адресами, по умолчанию sshd прослушивает их все, в том числе IPv6 адреса:

ListenAddress 0.0.0.0
ListenAddress ::

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

Кстати, смотрите статью «Как настроить Kali Linux на использование статичного IP адреса».

Директиву ListenAddress можно использовать несколько раз в одном конфигурационном файле. Разрешены следующие форматы:

Если порт не указан, то sshd будет прослушивать на указанном порту в соответствии со всеми установленными опциями Port в этом файле.

Квалификатор rdomain является необязательным, он имеет отношение к маршрутизации.

Также обратите внимание, что с ListenAddress обязательно должен быть указано имя хоста (адрес) ИЛИ порт. Можно указать отдельно имя хоста (адрес), можно указать отдельно порт, а также можно указать их вместе. Во всех вариантах rdomain может отсутствовать.

Дополнительно:  Презентация: как сделать, чтобы она открывалась везде?

Опции командной строки (об их использовании далее) имеют приоритет над директивами конфигурационного файла. В том числе опция для установки используемого порта приводят к тому, что Port в конфигурационном файле игнорируется. Но порты указанные с ListenAddress перезаписывают порты в строке команды.

Вы можете указать конкретный IP, который будет прослушиваться в ожидании подключений. А опцией AddressFamily вы можете выбрать для прослушивания все адреса, только IPv4 или только IPv6:

Почему пользователь root не может подключиться по SSH с верным паролем. Как запретить или разрешить подключение root по SSH

Permission denied, please try again.
Permission denied (publickey,password).

То проверьте значение директивы PermitRootLogin:

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

Директива PermitRootLogin определяет, может ли root выполнить вход используя ssh. Аргументами могут быть: yes, prohibit-password, forced-commands-only или no. Значением по умолчанию является prohibit-password.

Если эта опция установлена на prohibit-password (или устаревший псевдоним without-password), то вход по паролю и интерактивная аутентификация с клавиатуры отключены для пользователя root.

Если эта опция установлена на forced-commands-only, вход root с аутентификацией по публичному ключу будет разрешён, но только если была указана опция ForceCommand с командой (это может быть полезно для получения удалённых бэкапов, даже если нормальный вход root не разрешён). Все другие методы аутентификации отключены для root.

Если эта опция установлена на no, то root’у не разрешён вход вовсе.

Если опция установлена на yes, то разрешён вход для рута без ограничений.

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

Запрет и разрешение входа в SSH по паролю обычным пользователям

Чуть выше мы рассмотрели вариант, когда пользователю root запретить вход по паролю. Такую же настройку можно сделать для всех остальных пользователей, для этого используется директива PasswordAuthentication. Значением по умолчанию является yes, то есть вход по паролю разрешён. Для запрета входа по паролю всем пользователям, установите значение этой директивы на no.

Разрешение входа без пароля

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

Как разрешить или запретить пользователям входить через SSH

Шаблон состоит из нуля или более символов, которые не являются белыми пробелами, ‘*’ (подстановочного символа, который соответствует нулю или более символам), а также ‘?’ (подстановочный символ, который соответствует ровно одному любому символу). Например, чтобы охарактеризовать любой хост в наборе доменов «.co.uk» можно использовать следующий шаблон:

Список шаблонов — это несколько шаблонов, разделённых запятой. Шаблоны внутри списка могут иметь противоположное значение если перед ними стоит восклицательный знак («!»). Например, для разрешения ключа использовать откуда угодно внутри организации, кроме пула «dialup», можно использовать следующее (в authorized_keys):

Помните, что отрицательное совпадение никогда само по себе не даст положительных результатов. Например, попытка сопоставить хост «host3» следующими списку шаблонов не найдёт совпадений:

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

Как разрешить подключение только с определённого IP или группы IP. Как заблокировать определённые IP для SSH

Возможно ограничить ключ ssh или ключ на основе ca набором адресов в файле .ssh/authorized_keys домашнего каталога данного пользователя:

Настройка журналов SSH сервера

Служба SSH не ведёт свой собственный лог и записывает события в системный журнал. О том, как его просмотреть, обратитесь к разделу «Как проверить журнал событий SSH службы».

Можно настроить подробность ведения журнала — уровень вербальности, то есть какие именно сообщения будут записываться в этот журнал. Для этого используется директива LogLevel. Её значем по умолчанию является INFO. Также доступны следующие варианты:

DEBUG и DEBUG1 являются эквивалентами. DEBUG2 и DEBUG3 — каждый указывает на более высокие уровни вывода отладочной информации.

Ведение журнала на уровне DEBUG нарушает политику приватности пользователей и не рекомендуется.

Запуск SSH без отсоединения от терминала

Запуск службы sshd описан в первой части. Также демон sshd можно запустить по имени файла. Для этого нужно указать полный путь до файла sshd, чтобы его узнать:

Запущенная таким образом sshd отключиться от терминала (перейдёт в фоновое выполнение) и не будет выводить что-либо в стандартный вывод.

Можно запустить sshd как процесс без отсоединения от терминала (чтобы процесс не стал демоном), для этого используйте опцию -D — это позволяет упростить процесс мониторинга работы SSH, поскольку сообщения о событиях и проблемах службы будут выводиться в стандартный вывод. Дополнительно можно указать опцию -d для включения режима отладки:

sudo /usr/bin/sshd -D -d

Запуск сервера SSH с другим конфигурационным файлом

С помощью опции -f можно указать путь до другого конфигурационного файла (значение по умолчанию /etc/ssh/sshd_config). sshd откажется запускаться без конфигурационного файла.

Как проверить конфигурационный файл сервера SSH без запуска службы

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

Расширенный тестовый режим. С этой опцией sshd проверит правильность файла конфигурации, выведет действующую конфигурацию в стандартный вывод и затем завершит работу. При желании, правила соответствия могут применяться путём указания параметров соединения с использованием одной или нескольких опций -C.

Другие важные опции командной строки сервера SSH

Указывает путь к файлу сертификата для идентификации sshd во время обмена ключами. Файл сертификата должен соответствовать файлу ключа хоста, указанному с помощью параметра -h или директивы конфигурации HostKey.

Указывает файл, из которого читается ключ хоста. Эта опция должна быть указана, если sshd не запускается от имени пользователя root (поскольку обычные файлы ключей хоста как правило не читаются никем, кроме root). По умолчанию это /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_ed25519_key и /etc/ssh/ssh_host_rsa_key. Можно иметь несколько файлов ключей хоста для разных алгоритмов ключей хоста.

Добавить журналы отладки в файл_журнала вместо системного журнала.

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

Может использоваться для задания параметров в формате, используемом в файле конфигурации (sshd_config). Это полезно для указания параметров, для которых нет отдельного флага командной строки. Самые важные директивы конфигурационного файла рассмотрены выше.

Указывает порт, на котором сервер прослушивает соединения (по умолчанию 22). Допускается использование нескольких портов. Порты, указанные в файле конфигурации с параметром «Port», игнорируются, если указан порт командной строки. Порты, указанные с помощью параметра ListenAddress, переопределяют порты командной строки.

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

Другие опции sshd

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

С другими опциями конфигурационного файла sshd (на английском языке) вы сможете ознакомиться с помощью команды:

Информацию об опциях командной строки можно увидеть с помощью:

SSH — (Secure Shell) — это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал. Если вы администратор нескольких серверов или даже продвинутый веб-мастер, то наверное, вы часто сталкиваетесь с необходимостью работать с тем или иным компьютером по ssh. В Linux для этого используется сервер ssh на машине, к которой нужно подключится и клиент, на той из которой подключаются.

Дополнительно:  Сетевой адаптер не обнаружен или отсутствует в Windows 10

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

Базовый синтаксис

Синтаксис команды выглядит следующим образом:

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

Теперь давайте рассмотрим самые основные опции команды ssh:

Это далеко не все опции утилиты, остальные выходят за рамки данной статьи. Многие настройки работы ssh можно изменять через конфигурационный файл ~/.ssh/config но здесь мы это тоже подробно рассматривать не будем.

Настройка сервера SSH

Настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Многие из них мы тоже трогать не будем. Рассмотрим только самые интересные. Сначала откройте файл /etc/ssh/sshd.conf

Порт ssh

По умолчанию ssh работает на порту 22. Но такое поведение небезопасно, поскольку злоумышленник знает этот порт и может попробовать выполнить Bruteforce атаку для перебора пароля. Порт задается строчкой:

Поменяйте значение порта на нужное.

Протокол SSH

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

И приведите ее к такому виду:

Рут доступ

По умолчанию Root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:

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

Мы можем разрешить доступ к ssh только для определенного пользователя или группы. Для этого  добавьте строчки:

Выполнение X11 приложений

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

Основные опции рассмотрели, перед тем как переходить дальше, не забудьте перезагрузить ssh сервер чтобы сохранить изменения:

service sshd restart

Использование SSH

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

Подключение к серверу

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

Выполнить команду

Мы привыкли подключаться к удаленному серверу, а уже потом выполнять нужные команды, но на самом деле утилита ssh позволяет сразу выполнить нужную команду без открытия терминала удаленной машины. Например:

Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.

Выполнить локальный скрипт

Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:

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

Теперь чтобы восстановить состояние диска из сделанной копии выполните:

Здесь и выше /dev/sda имя файла вашего жесткого диска.

Аутентификация без пароля

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

Настроить такое поведение очень легко. Сначала создайте ключ командой:

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

Затем отправляем ключ на сервер:

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

Взять пароль из локального файла

Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да — возможно. Для этого используется оператор перенаправления ввода Bash:

Изменить приветствие SSH

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

Смотрим неудачные попытки входа SSH

Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:

Передача файлов по SSH

Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:

Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:

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

Такое копирование файлов ssh позволяет отправлять сразу целые папки.

Запуск графических приложений по ssh

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

Затем просто выполняем команду запуска графического приложения на удаленном сервере вот таким образом:

Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С — сжатие данных.

Завершение сессии SSH

Если вы использовали SSH с нестабильным интернетом, когда соединение время от времени рвется, то вам уже, наверное, надоело закрывать терминал, потому что иначе, на первый взгляд, сеанс никак не прекратить. Когда соединение с удаленным сервером разорвано вы не можете ввести никакую команду и сочетания клавиш Ctrl+C, Ctrl+Z, Ctrl+D не работают. И не будут работать поскольку клиент пытается отправить эти команды на сервер. Но есть решение — Escape последовательности. Чтобы активировать их поддержку добавьте строку:

В файл /etc/ssh/ssh_config. Теперь, чтобы разорвать SSH соединение достаточно нажать Enter и набрать:

Другие управляющие символы можно узнать нажав:

Туннели SSH

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

Например, сделаем удалённую базу данных доступной локально на порту 5555. Для этого выполните подставив свои значения:

Доступ по ssh под root

Опция -N сообщает, что команду на удалённой машине выполнять не нужно. Локальный порт — 5555, поскольку сервер баз данных слушает на локальном интерфейсе удалённой машины, то и здесь надо указывать адрес 127.0.0.1. А порт MySQL по умолчанию 3306. Если же вы хотите чтобы локальный сервис был доступен на удалённой машине, то следует использовать опцию -R:

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Оцените статью
Master Hi-technology
Добавить комментарий