Настройка ssh debian 10

Обновлено: 04.07.2024

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

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

  • Чтобы получить возможность удалённо подключаться к Debian 10, нам нужно установить Openssh-сервер.
  • Авторизуемся в системе под пользователем root, и запускаем соответствующую команду:
  • После установки, сервер автоматически запустится, и пропишется в автозагрузку.
  • Теперь у нас есть возможность удалённого подключения. Но подключаться мы можем только под пользователем, которого создали при установке операционной системы. Авторизация под пользователем root, по умолчанию заблокирована.
  • Для выполнения действий под привилегиями root, нужно вводить команды с префиксом sudo, и подтверждать всё это вводом пароля.

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

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

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

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

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

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

Понравилась статья?
Напиши Комментарий, и Поделись с Друзьями!

wm-logo


WMZ-кошелёк = Z667041230317
WMR-кошелёк = R571680308266 ✔ Для вас важна анонимность и безопасность в сети Internet?
✔ Вы боитесь доверять сторонним VPN сервисам из-за утечки информации?
✔ Вам нужен VPN, где гарантированно не ведутся логи?
✔ Хотите иметь возможность делиться VPN со своими близкими и друзьями?
✅ Лучшим решением будет - Персональный VPN-Cервер , работающий только для Вас.

* В зависимости от хостинг-провайдера и параметров самого сервера, ежемесячная оплата сервера, может быть дешевле, чем покупка многих платных vpn-клиентов (от 100 руб в месяц).

* При покупке платных vpn-клиентов, Вам предоставляют возможность одновременного использования максимум 5 устройств-клиентов, иногда даже с ограниченным трафиком. В случае с Персональным VPN-сервером, количество устройств-клиентов зависит от Вашего желания, и ограничивается только ресурсами самого сервера.

* Так как многие Vpn-сервисы в какой-либо форме производят сбор данных о своих пользователях, Персональный Vpn-сервер – это ещё и защита от утечек информации.

- Если у Вас уже есть работающий VDS или выделенный сервер (отвечающий необходимым параметрам), то стоимость настройки составит - всего 500 руб.

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Данная статья является частью единого цикла статьей про сервер Debian.

Введение

Любая работа с сервером после установки чаще всего начинается со стандартных обязательных действий, без которых либо не получится продвинуться дальше, либо будет неудобно работать. Например, вам в любом случае необходимо выполнить сетевые настройки, желательно обновить систему и установить часовой пояс. Рекомендуется сразу настроить автообновление времени, подрихтовать параметры sshd, установить midnight commander и выполнить другие настройки.

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

Указываем сетевые параметры

Итак, у нас в наличии только что установленная система. Узнать или проверить ее версию можно командами:

Очень подробно про настройку сети в Debian я написал в отдельной статье. Рекомендую с ней ознакомиться. Здесь же кратко выполним основное. Для настройки сети, необходимо отредактировать файл /etc/network/interfaces. Сделаем это:

Для получения IP адреса по dhcp достаточно будет следующего содержания:

Если у вас статический адрес, то его настроить можно следующими параметрами в файле:

Сохраняем файл. Теперь нужно выполнить перезапуск сети. В Debian это делается командой:

В системном логе /var/log/syslog при этом будут записи:

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

К сетевым настройкам я отношу установку пакета net-tools, в состав которого входят старые и привычные утилиты для работы с сетью - ifconfig, netstat, route и другие. В современных дистрибутивах их заменили одной командой ip, но лично мне вывод некоторых старых команд, конкретно, netstat, нравится больше, поэтому я иногда ими тоже пользуюсь.

На этом настройка сети закончена.

Обновление системы, отличие apt upgrade от dist-upgrade и full-upgrade

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

Обновление debian

Посмотреть список пакетов, готовых к обновлению, можно с помощью команды:

Теперь выполним простое обновление всех пакетов системы:

apt upgrade

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

Ключ dist-upgrade или full-upgrade (это одно и то же) в дополнение к upgrade обрабатывает все изменения зависимостей для новых пакетов и во время работы может удалять ненужные и ставить необходимые пакеты для обновления. Вот выдержка из документации по поводу этих двух ключей.

Отличие apt upgrade от apt dist-upgrade и full-upgrade

Так что после обычного обновления, делаем еще full-upgrade.

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

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

На этом обновление системы закончено. Если вы хотите обновить версию релиза, например Debian 9 обновить до Debian 10 Buster, то читайте отдельный материал.

Настройка ssh

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

Существует расхожее мнение, что менять порт ssh это наивность, а не защита. Надо просто настроить сертификаты, fail2ban или еще каким-то образом защитить ssh порт, к примеру, с помощью ограничений iptables, и т.д. Тем не менее, я все же рекомендую порт сменить на нестандартный. Даже если у вас все защищено от подбора паролей, так как вы используете сертификаты, лишние запросы к ssh порту тратят ресурсы сервера, хоть и не очень большие. Идет установка соединения, обмен рукопожатиями и т.д. Зачем вам это нужно?

По-умолчанию в Debian, впрочем как и в любом другом дистрибутиве Linux, ssh сервер работает на 22 порту. Изменим этот порт, к примеру, на 23331. Так же я еще изменяю конфигурацию для разрешения подключения по ssh пользователя root с использованием пароля. В Debian из коробки пользователь root по ssh паролем авторизовываться не может. Изменим и это. Открываем файл настроек:

И изменяем там следующие строки. Приводим их к виду:

Сохраняем изменения и перезапускаем сервер ssh следующей командой:

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

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

Отдельно тему подключения к серверу под root я рассмотрел в статье про sudo. Кому интересно, переходите в нее и делитесь своим мнением на этот счет.

Установка утилит mc, htop, iftop

Следующим шагом я настраиваю некоторые полезные утилиты, которыми регулярно пользуюсь в повседневной работе. Первая из них это всем известный двухпанельный файловый менеджер Midnight Commander. Установим mc на наш сервер:

И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса.

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

Так же я рекомендую очень удобный диспетчер задач - htop. Мне он помог, к примеру, решить проблему Взлома сервера CentOS. Ставим его на сервер:

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

debian iftop

Настройка и обновление времени в Debian

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

Узнать дату, время, часовой пояс можно командой date:

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

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

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

Дальше синхронизируем время с сервером времени в интернете. Для разовой или ручной синхронизации понадобится отдельная утилита. Установим ntpdate на сервер:

И синхронизируем время:

Если получаете ошибку:

Значит у вас уже работает служба ntp. Ее нужно остановить и обновить время вручную. Хотя если она работает, то у вас и так должно быть все в порядке.

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

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

Настройка firewall (iptables) в Debian

В качестве firewall в Debian по-умолчанию используется iptables, его и будем настраивать. Изначально фаервол полностью открыт и пропускает весь трафик. Проверить список правил iptables можно следующей командой:

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

Создадим файл с правилами iptables:

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

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

Даем файлу права на запуск:

Настройка iptables в debian

Проверяем, что правила записались в файл /etc/iptables_rules. Если их там нет, то записываем их вручную.

Правила применились и произошла их запись в файл /etc/iptables_rules. Теперь нужно сделать так, чтобы они применялись при загрузке сервера. Для этого делаем следующее. Открываем файл /etc/network/interfaces и добавляем в него строку pre-up iptables-restore < /etc/iptables_rules Должно получиться вот так:

Для проверки перезагрузите сервер и посмотрите правила iptables. Должен загрузиться настроенный набор правил из файла /etc/iptables_rules.

Настройка логов cron

По-умолчанию, в Debian нет отдельного лог файла для событий cron, они все сыпятся в общий лог /var/log/syslog. Лично мне это не очень нравится, я предпочитаю выводить эти события в отдельный файл. Об этом я написал отдельно - вывести логи cron в отдельный файл. Рекомендую пройти по ссылке и настроить, если вам это необходимо. Там очень кратко и только по делу, не буду сюда копировать эту информацию.

Установка и настройка screen

Я привык в своей работе пользоваться консольной утилитой screen. Изначально она задумывалась как инструмент, который позволяет запустить что-то удаленно в консоли, отключиться от сервера и при этом все, что выполняется в консоли продолжит свою работу. Вы сможете спокойно вернуться в ту же сессию и продолжить работу.

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

Позже я решил подробнее ознакомиться с этим инструментом и обнаружил, что там есть несколько удобных моментов, которые можно использовать в ежедневной работе. Вот как использую утилиту screen я. При подключении к серверу у меня запускается screen с тремя окнами 1, 2, 3. Первое окно автоматически переходит в каталог /, второе в /etc, третье в /var/log. Я осмысленно назвал эти окна: Main, etc, logs соответственно. Внизу находится строка состояния, в которой отображен список всех открытых окон и подсвечено активное окно.

С помощью горячих клавиш я очень быстро переключаюсь между окнами в случае необходимости. Вот как выглядит мое рабочее окно ssh подключения:

настройка screen в debian

Переключаюсь между окнами с помощью стандартных горячих клавиш screen: ctrl+a 1, ctrl+a 2, ctrl+a 3. Я специально изменил нумерацию, чтобы она начиналась не с 0 по-дефолту, а с 1. Так удобнее на клавиатуре переключать окна. Кнопка 0 находится слишком далеко от 1 и 2.

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

Создаем в каталоге /root конфигурационный файл .screenrc следующего содержания:

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Теперь можно перезагрузить сервер и проверить, все ли в порядке. У меня все в порядке, проверил :) На этом базовая настройка сервера debian окончена. Можно приступать к конфигурации различных сервисов, под которые он настраивался. Об этом я рассказываю в отдельных статьях.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

В этой статье мы узнаем как установить и настроить ssh сервер на Debian 9 Stretch для удаленного доступа.

Содержание:

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

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

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




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


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

root доступ через ssh

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

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

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


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



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



Перезапустим ssh-сервер, чтобы изменения вступили в силу.


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


Подключение по ssh

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

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


Теперь, подключимся к этому серверу с другого компьютера:


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


Затем вам будет предложено ввести пароль от пользователя, под которым вы заходите. Введите пароль и нажмите <Enter>.


После подключения имя хоста изменилось с «linuxhint-pc» на «linuxhint», как вы можете увидеть на скриншоте ниже.


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

Как вы видите, ip адрес 192.168.10.82


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

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

В этой статье я объясню, как настроить SSH сервер на операционной системе Debian/Ubuntu. Как только вы получите доступ по SSH к вашему серверу (VPS/VDS, dedicated server), сразу же к вам полезут различные боты с попыткой взлома вашего сервера. Постарайтесь сразу же сделать минимальную настройку SSH, чтобы защититься от ботов. Итак, приступим к настройке.

Эта инструкция была выполнена на операционных системах: Debian 10, Debian 9, Ubuntu 20.10, Ubuntu 20.04, Ubuntu 19.10.

Первое соединение с сервером

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

где 192.168.0.101 — это IP-адрес вашего сервера.

При первом подключении вы должны подтвердить подлинность хоста, введя "yes". Дальше необходимо ввести пароль суперпользователя:

Первое соединение с сервером

Теперь у нас есть полный доступ к серверу.

Создание пользователя с правами администратора

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

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

Добавим нового пользователя в группу sudo, выполнив команду в терминале:

Закроем SSH-соединение, выполнив команду в терминале:

Создание пользователя с правами администратора

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

Войти в систему как новый пользователь

Отключение root-логина

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

Ищем в файле параметр "PermitRootLogin" и устанавливаем значение "no". Если параметр не нашли, добавляем в конце файла строчку "PermitRootLogin no". Сохраняем изменения и закрываем файл. Для применения новых настроек перезапустим сервер SSH, выполнив команду в терминале:

Отключение root-логина

Изменения остальных параметров будет происходить таким же способом!

Изменение порта SSH

Чтобы минимизировать попытки взлома по стандартному порту 22, просто поменяем его на нестандартный, но который не занят другими сервисами. Диапазон значений составляет 1 — 65535. Вы можете проверить, свободен ли порт в файле /etc/services, выполнив команду в терминале:

Например, выберем порт 2222. Открываем файл настроек и ищем параметр "Port". Устанавливаем новое значение порта вместо стандартного 22. Сохраняем изменения и закрываем файл, перезапускаем сервер SSH.

Изменение порта SSH

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

Теперь при дальнейшем входе в систему по SSH необходимо указывать новый порт, выполнив команду в терминале:

Войти, используя новый порт

Разрешенные пользователи

По умолчанию вход разрешен для всех имен пользователей. Давайте разрешим доступ к серверу по протоколу SSH с помощью параметра "AllowUsers" только для перечисленных пользователей (отделенные друг от друга пробелами):

AllowUsers username username2

Добавляем эту строчку в конец файла настроек. Сохраняем изменения и закрываем файл, перезапускаем сервер SSH.

Разрешенные пользователи

Разрешенные IP-адреса

Мы можем ограничить доступ к серверу с определенных IP-адресов или их семейства. Параметр "AddressFamily" указывает, какое семейство IP-адресов будет использоваться: any (IPv4 + IPv6), inet (только IPv4), inet6 (только IPv6). Давайте укажем значение inet для доступа только с IP-адресов версии 4:

Добавляем эту строчку в конец файла настроек. Сохраняем изменения и закрываем файл, перезапускаем сервер SSH.

Еще мы можем указать для каких IP-адресов будет разрешен доступ с помощью параметра "ListenAddress". Например, укажем адрес 192.168.0.100:

Добавляем эту строчку в конец файла настроек. Сохраняем изменения и закрываем файл, перезапускаем сервер SSH.

Разрешенные IP-адреса

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

Включение аутентификации с открытым ключом

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

После выполнения этой команды будут созданы два файла:

  • id_rsa_remote_server — это приватный ключ, который должен храниться только у вас на компьютере и никому другому не передается.
  • id_rsa_remote_server.pub — это публичный ключ, который передается для проверки вашей подписи.

Создание приватного и публичного ключей

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

Копирование публичного ключа на удаленный сервер

Также необходимо проверить включена ли возможность аутентификации по открытому ключу с помощью параметра "PubkeyAuthentication", по умолчанию данный параметр имеет значение "yes".

Теперь при дальнейшем входе в систему по SSH у нас не будет запрашиваться пароль.

SSH вход без пароля

Отключение аутентификации по паролю

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

Для отключения аутентификации по паролю используется параметр "PasswordAuthentication":

Добавляем эту строчку в конец файла настроек. Сохраняем изменения и закрываем файл, перезапускаем сервер SSH.

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

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