Домашний сервер на Orange Pi — часть 3: установка и настройка серверов ssh, samba и ftp
В прошлой статье, мы с вами подключили USB-диск к нашему серверу, который понадобится нам в дальнейшем. Сегодня мы подолжим настраивать наш сервер: проведём установки и настройки серверов, обеспечивающих удаленный доступ к нашему компьютеру.
Немнго определений, что есть что:
SSH — это специальный сетевой протокол, позволяющий получать удаленный доступ к компьютеру с большой степенью безопасности соединения. Более подробно про протокол ssh можно прочитать тут.
SAMBA — программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL.
FTP — протокол передачи файлов по сети, является одним из старейших прикладных протоколов, появившихся задолго до HTTP, и даже до TCP/IP, в 1971 году.
Настройка серверов
1. Настройка сервера ssh
Приступим к настройке сервера ssh т.к. он у нас уже установлен и работает. Из всех настроек сервера ssh нас, интересует всего несколько: смена стандартного порта, чтобы обезопасиь себе от ботов-сканеров в сети; запрет авторизации по сети пользователю root; и запрет авторизации по логину и паролю (доступ будет разрешён только по ключу-ssh).
В первую очередь создадим ключи ssh для авторизации на локальном сервере без ввода логина и пароля. Для этого на клиентском компьютере (Linux или MacOS) в терминале вводим команду:
ssh-keygen
Утилита предложит нам выбрать расположение ключей. Я рекомендую ничего не менять и оставить все по умолчанию7 Ключи будут храниться в домашнем каталоге в папке ~./ssh/.
Созданные ключи будут иметь следующие имена: id_rsa - секретный ключ, и id_rsa.pub - публичный. Затем утилита предложит ввести дополнительный пароль для шифрования ключа. Его можно не указывать - я указывать не буду, для того чтобы не вводить пароль при входе на сервер (мы же в принципе для этого и делаем аутентификацию по ключу).
Жмём несколько раз Enter и теперь у нас есть открытый и закрытый ключи SSH и мы можем использовать их для проверки подлинности.
Дальше нам осталось разместить открытый ключ на удаленном сервере. Для этого есть специальная утилита. Выполняем в терминале:
ssh-copy-id example@192.168.1.211
Вводим пароль и наш публичный ключ устанавливается на сервере.
Заходим на наш сервер с использованием ключа, процедура входа ничем не отличается от входа по логину и паролю, единственное отличие - это отсутвие запроса на ввод пароля:
ssh example@192.168.1.211
Настройки сервера ssh находятся в файле /etc/ssh/sshd_config
, который мы и открываем для редактирования
sudo nano /etc/ssh/sshd_config
и редактируем его. Нас интересуют следующие параметры:
#Port 22
PermitRootLogin yes
PubkeyAuthentication yes
#PasswordAuthentication yes
X11Forwarding yes
Рассмотрим эти параметры поподробнее:
- Port
Порт, на котором сервер sshd, принимает и обслуживает соединения. Директиву можно указывать несколько раз для разных портов. Кроме того, если есть возможность, в целях безопасности, рекомендуется сразу изменить значение По умолчанию. В некоторой степени, это оградит систему от постоянных попыток перебора пароля, на стандартном порту.
По умолчанию 22. Если Вы хотите, то можете расскоментировать параметр (убрать знак # в начале строки) и изменить его, но если Ваш сервер находится за роутером, что чаще всего с одноплатниками и происходит, то проще изменить порт на роутере во время проброса. Именно так я и сделаю. - PermitRootLogin
Разрешить пользователю root вход через протокол SSH. Возможные значения: «yes», «without-password», «forced-commands-only», «no». Если директива установлена в «without-password» вход для пользователя root по паролю, будет запрещен. Значение «forced-commands-only» разрешает регистрацию пользователя root по открытому ключу, но только если установлен параметр command ( может пригодиться для удалённого создания резервных копий, даже если вход пользователя root по протоколу SSH, в обычном режиме запрещен ). Остальные способы аутентификации для пользователя root будут запрещены.
Значение по умолчанию «yes», удаленный вход в систему пользователем root - разрешён. Это не дело, поэтому запрещаем вход поьлзователю root и приводим параметр к виду - PermitRootLogin no. - PubkeyAuthentication
Разрешить аутентификацию по открытому ключу. Только для протокола версии 2.
По умолчанию «yes». И мы не меняем его. - PasswordAuthentication
Разрешить аутентификацию по паролю.
По умолчанию «yes» и закомментировано, поэто расскомментируем его и меняем значение «yes», на «no». PasswordAuthentication no - X11Forwarding
Разрешить туннелирование X11. Возможные значения «yes», «no». Если дисплей-посредник ожидает соединений на любых адресах ( подстановка «*»), включение туннелирования X11,подвергает сервер и виртуальные дисплеи пользователей, дополнительной опасности. Проверка и подмена данных аутентификации при атаке выполняются на стороне клиента. При туннелировании X11 графический сервер клиента, может подвергаться атаке, при запросе клиентом SSH туннелирования. Для большей безопасности администратор может запретить туннелирование, установив значение «no».
По умолчанию: «yes». Так и оставляем для того, чтобы запускать приложения с интерфейсом по сети.
В итоге наши параметры должны принять следующий вид:
#Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
X11Forwarding yes
Более подробную информацию о настройке сервера ssh можно получить в man-странице
Сохраняем внесённые изменения в файле (Ctrl-O) и выходим (Ctrl-X) и перезапускаем сервер ssh. Для этого в терминале вводим:
sudo service sshd restart
или
sudo systemctl restart sshd
На этом настройка сервера SSH завершена.
2. Установка и настройка сервера SAMBA
В первую очередь обновляем нашу систему:
sudo apt update && sudo apt upgrade
После чего установим samba на наш сервер:
sudo apt install samba samba-common samba-common-bin
Следующим шагом создадим каталог, который мы будем расшаривать. Для этого переходим на наш внешний жесткий диск настроенный в прошлой статье
cd /media/disk
создадим каталог
mkdir ./samba
и присвоим ему расширенный права доступа
sudo chmod -R 755 ./samba
sudo chown -R nobody:nogroup ./samba
Следующим шагом мы опишем папку samba в конфигурационном файле сервера samba, но вначале сделаем его резервную копию
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_save
и откроем файл конфигурации для редактирования и переходим в самый конец файла
sudo nano /etc/samba/smb.conf
и описываем наш каталог, а заодно комментируем описание принтеров (мы же их не подключали и они нам пока не нужны).
[samba]
path = /media/disk/samba
comment = Public Share
browsable = yes
writable = yes
guest ok = yes
read only = no
сохраняемся и выхоим из редакора nano (мы же уже знаем как это делать).
По правилам хорошего тона, надо проверить: корректно ли мы все описали в конфигурационном файле, для этого есть специальная утилита - testparm
testparm -s /etc/samba/smb.conf
После анализа заданного конфигурационного файла testparm выводит все значения файла smb.conf, включая значения по умолчанию. Это помогает убедиться, что используются ожидаемые значения параметров конфигурации.
Теперь нам осталось перезагрузить сервер SAMBA и проверить наш расшаренный каталог с клиентского компьютера.
sudo systemctl enable smbd
sudo systemctl start smbd
тем самым мы активировали сервер SAMBA для автоматического запуска после перезагрузки нашего компьютера и запустили сервер для дальнейшей работы.
Проверяем работу нашего сервера: подключаемся в гостевом режиме к серверу и создаём каталог Test, после чего проверяем его наличие в терменале нашего сервера. Убеждаемся в том, что всё работает и тихо радуемся тому, какие же мы молодцы.
3. Установка и настройка сервера FTP
Установка и настройка сервера FTP на Orange Pi, сводится всего к нескольки действиям и является самой легкой и быстрой из всего того, что мы уже проделали.
Если мы в терминале введём
apt search ftp server
то увидим, что в репозитории дистрибутива имеется достаточное количество разновидностей FTP-сервера. Я использую vsftpd - как самый простой в настройке. Установка аналогична установке любого другого пакета:
sudo apt install vsftpd
Теперь откроем на редактирование файл конфигурации сервера и отредактируем несколько параметров.
sudo nano /etc/vsftpd.conf
write_enable=YES - раскоментируем
pasv_enable=YES - дописываем
В этих настройках мы разрешаем запись в каталоги и включаем пассивный режим работы FTP-сервера.
Мой вам совет: не открывайте порты на рутере для FTP-сервера. В связи с тем, что ftp протокол не очень защищен, то лучше им не пользоваться в сети интернет. Для заливки файлов лучше использовать ssh или sftp.
Всё.
Теперь включаем сервер и перезапускаем его для того, чтобы внесенные изменеия вступили в силу.
sudo systemctl enable vsftpd
sudo systemctl restart vsftpd
Для входа на FTP-сервер используем логин и пароль от нашего сервера, если пользователь существует в системе, то при входе на наш фтпишник мы попадем в домашний каталог пользователя.
На этом всё, до следующих встреч.
Домашний сервер на Orange Pi часть 1: установка ОС и первичная настройка
Домашний сервер на Orange Pi — часть 2: подключение USB-диска
Домашний сервер на Orange Pi — часть 4: установка LAMP-сервера