В этой статье я расскажу вам, как настроить SFTP-сервер с помощью MySecureShell на Ubuntu 18.04. SFTP – безопасный способ передачи файлов с использованием зашифрованного SSH-соединения. Хотя он широко поддерживается современными FTP-клиентами, это совершенно другой протокол, чем FTP (протокол передачи файлов).
Вы можете спросить меня, почему MySecureShell вместо традиционного FTP-сервера. Вот несколько особенностей,
- Обеспеченная передача данных с использованием SSH
- Нет необходимости управлять сертификатами SSL
- Простота установки и настройки
- Ограничение полосы пропускания
- Ограничения на файлы и папки
- Список управления Acess с использованием IP / Username / Groups / VirtualHost
- Ограничьте пользователей только sftp (по умолчанию доступ к оболочке отключен)
- Усовершенствованная система регистрации
Итак, давайте начнем с установки , базовые знания FTP достаточно для понимания этого мануала
Установка
С ubuntu 15.04 и выше MySecureShell доступен в репозиториях по умолчанию. Мы используем ubuntu 18.04 для этой установки.
Просто запустите команды для установки MySecureShell.
# apt-get install mysecureshell
Если это невозможно, выполните следующие действия, убедитесь, что все следующие шаги выполняются как пользователь root.
# vim /etc/apt/sources.list
Добавьте следующие 2 строки,
deb http://mysecureshell.free.fr/repository/index.php/ubuntu test main deb-src http://mysecureshell.free.fr/repository/index.php/ubuntu test main
Теперь добавьте ключ gpg:
# gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys E328F22B; gpg --export E328F22B | apt-key add # gpg: keybox '/root/.gnupg/pubring.kbx' created # gpg: /root/.gnupg/trustdb.gpg: trustdb created # gpg: key 7601D76CE328F22B: public key "MySecureShell repository " imported # gpg: Total number processed: 1 # gpg: imported: 1 OK
После добавления репозитория вы можете начать установку
# apt-get update # apt-get install mysecureshell
запустите службу:
# systemctl start mysecureshell.service # systemctl status mysecureshell.service
Пример вывода:
# systemctl start mysecureshell.service
root@itsecforu:~# systemctl status mysecureshell.service
* mysecureshell.service – LSB: MySecureShell SFTP Server
Loaded: loaded (/etc/init.d/mysecureshell; generated)
Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 4min 44s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 2322)
CGroup: /system.slice/mysecureshell.service
May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server…
May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features
May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755
May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server.
# systemctl status mysecureshell.service * mysecureshell.service - LSB: MySecureShell SFTP Server Loaded: loaded (/etc/init.d/mysecureshell; generated) Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 50min ago Docs: man:systemd-sysv-generator(8) Tasks: 0 (limit: 2322) CGroup: /system.slice/mysecureshell.service May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server... May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755 May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server. #
Используйте нижеприведенные команды, чтобы остановить и перезапустить службу mysecureshell
# systemctl stop mysecureshell.service # systemctl restart mysecureshell.service
Создание пользователя SFTP для MySecureShell
Во-первых, нам нужно найти место установки MySecureShell,
# whereis mysecureshell
путь установки
mysecureshell - /usr/bin/mysecureshell.
Теперь, после проверки пути, создайте пользователя
# useradd -m -s / usr / bin / mysecureshell testsftpuser # passwd testsftpuser
Как вы видите в приведенной выше команде, мы создаем пользователя и назначаем путь к местоположению mysecureshell.
Кроме того, вы можете назначить существующих пользователей для доступа и использования MySecureShell с помощью команды:
# sudo usermod -s /usr/bin/mysecureshell testsftpuser
Подключение пользователя
Теперь пользователь «testsftpuser» может подключиться к вашему SFTP-серверу от ваших клиентов, как показано ниже, с вашим IP-адресом вашей машины,
# ftp testsftpuser@45.33.54.153
IP-адрес вашей машины
Connected to 45.33.54.153 sftp>
Кроме того, вы можете войти на свой SFTP-сервер с помощью любых графических клиентов, таких как FileZilla, из вашей клиентской системы.
Команды MySecureShell
MySecureShell имеет следующий набор команд для администрирования вашего SFTP-сервера.
- sftp-admin
- sftp-kill
- sftp-state
- sftp-user
- sftp-verif
- sftp-who
sftp-admin
Эта команда позволяет удаленно управлять MySecureShell.
# sftp-admin [ssh options] user @ hostname
sftp-kill
Она отключит пользователя от FTP-сервера.
# sftp-kill testsftpuser Kill testsftpuser on PID 1961 (Press "Y" when requested)
sftp-state
Показать статус сервера ftp
# sftp-state
Образец вывода
# sftp-state Server is up
sftp-user
Эта команда позволяет вам создавать пользователя SFTP без указания пути, который мы делали ранее.
# sftp-user create test
Список пользователей SFTP
# sftp-user list test testsftpser
Команда удалит пользователя test
# sftp-user delete test
sftp-verif
Эта команда проверяет и исправляет проблемы на сервере MySecureShell.
sftp-verif ################################################################################ MySecureShell Verification Tool ################################################################################ ### Verifing file existance ### /bin/MySecureShell [ OK ] /bin/sftp-who [ OK ] /bin/sftp-kill [ OK ] /bin/sftp-state [ OK ] /bin/sftp-admin [ OK ] /bin/sftp-verif [ OK ] /bin/sftp-user [ OK ] ### Verifing rights ### Verifing file rights of /etc/ssh/sftp_config [ OK ] Verifing file rights of /bin/sftp-who [ OK ] Verifing file rights of /bin/sftp-verif [ OK ] Verifing file rights of /bin/sftp-user [ OK ] Verifing file rights of /bin/sftp-kill [ OK ] Verifing file rights of /bin/sftp-state [ OK ] Verifing file rights of /bin/sftp-admin [ OK ] Verifing file rights of /bin/MySecureShell [ OK ] <h3>Verifing rotation logs ### Rotation logs have been found [ OK ] ### Verifing server status ### Verifing server status (ONLINE) [ OK ] [...]
sftp-who
Эта команда сообщит вам, кто в настоящее время подключен к FTP-серверу.
# sftp-who --- 1 / 10 clients --- Global used bandwidth : 0 bytes/s / 0 bytes/s PID: 2207 Name: testsftpuser IP: pa39-178-9-194.pa.nsw.optusnet.com.au Home: /home/testsftpuser Status: idle Path: / File: Connected: 2018/05/18 01:30:50 [since 03mins 59s] Speed: Download: 0 bytes/s [5.00 kbytes/s] Upload: 0 bytes/s [unlimited] Total: Download: 924 bytes Upload: 100 bytes #
Конфигурация
Основным конфигурационным файлом MySecureShell является / etc / ssh / sftp_config.
Вы можете настроить загрузку и загрузку полосы пропускания, пользователей chroot, максимальное количество подключений и т.д.
В файле конфигурации.
Вы можете установить эти параметры как для всех, так и для определенной группы.
# cat /etc/ssh/sftp_config
Теги по умолчанию
Тег по умолчанию используется, если вы хотите применить конфигурацию для всех своих пользователей
#Default rules for everybody Default GlobalDownload 50k #total speed download for all clients # o -> bytes k -> kilo bytes m -> mega bytes GlobalUpload 0 #total speed download for all clients (0 for unlimited) Download 5k #limit speed download for each connection Upload 0 #unlimit speed upload for each connection StayAtHome true #limit client to his home VirtualChroot true #fake a chroot to the home account LimitConnection 10 #max connection for the server sftp LimitConnectionByUser 1 #max connection for the account LimitConnectionByIP 2 #max connection by ip for the account Home /home/$USER #overrite home of the user but if you want you can use # environment variable (ie: Home /home/$USER) IdleTimeOut 5m #(in second) deconnect client is idle too long time ResolveIP true #resolve ip to dns LogFile /var/log/sftp-server_ftp.log # IgnoreHidden true #treat all hidden files as if they don't exist # DirFakeUser true #Hide real file/directory owner (just change displayed permissions) # DirFakeGroup true #Hide real file/directory group (just change displayed permissions) # DirFakeMode 0400 #Hide real file/directory rights (just change displayed permissions) #Add execution right for directory if read right is set HideNoAccess true #Hide file/directory which user has no access # MaxOpenFilesForUser 20 #limit user to open x files on same time # MaxWriteFilesForUser 10 #limit user to x upload on same time # MaxReadFilesForUser 10 #limit user to x download on same time DefaultRights 0640 0750 #Set default rights for new file and new directory # MinimumRights 0400 0700 #Set minimum rights for files and dirs ShowLinksAsLinks false #show links as their destinations # ConnectionMaxLife 1d #limits connection lifetime to 1 day # Charset "ISO-8859-15" #set charset of computer Default
Примечание. Журналы не включены по умолчанию, вы можете определить расположение файла журнала в файле конфигурации.
gFTP Установка
Теперь давайте попробуем установку gFTP на Ubuntu 18.04, следуя нижеуказанным шагам,
# sudo apt-get install gftp
- Открыть gFTP из приложений
- Введите IP-адрес SFTP-сервера, номер порта (по умолчанию / указывается при настройке сервера), имя пользователя и пароль и используйте SSH2. Нажмите Enter для входа в систему
- Если попытка входа в систему выполнена успешно. Мы подключаемся к SFTP с использованием gFTP