- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Топ — 5 FTP клиентов для Linux
- Настройка FTP-сервера vsFTPd на CentOS 7
- Установка и базовая настройка vsFTPd
- vsFTPd через TLS
- Виртуальные пользователи
- Хранение пользователей в базе данных
- Возможные проблемы
- Ошибка GnuTLS -15: An unexpected TLS packet was received
- 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
- 500 OOPS: cannot change directory:/.
- SFTP как альтернатива FTP
- FTP-клиент на CentOS
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Топ — 5 FTP клиентов для Linux
Лучшие из лучших в CLI
3 минуты чтения
Протокол передачи файлов (File Transfer Protocol — FTP) — это сетевой протокол, используемый для передачи файлов между клиентом и сервером в компьютерной сети. Самые первые приложения FTP были созданы для командной строки еще до того, как операционные системы GUI даже стали чем-то особенным, и, хотя существует несколько клиентов FTP с графическим интерфейсом, разработчики по-прежнему создают клиенты FTP на основе CLI для пользователей, которые предпочитают использовать старый метод.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Вот список лучших FTP-клиентов на основе командной строки для Linux.
Операционные системы Linux поставляются со встроенными FTP-клиентами, к которым вы можете легко получить доступ, введя команду ftp в своем терминале.
С помощью FTP вы можете подключаться к серверам анонимно (если эта функция включена на сервере) или использовать свои учетные данные пользователя, загружать и скачивать файлы между локальным компьютером и подключенными серверами, использовать псевдонимы и так далее.
Кроме того, при использовании FTP для передачи файлов между компьютерами соединение не защищено и данные не шифруются. Для безопасной передачи данных используйте sFTP (Secure File Transfer Protocol) или SCP (Secure Copy).
LFTP — это бесплатная утилита командной строки с открытым исходным кодом, разработанная для нескольких протоколов передачи файлов (например, sftp, fish, torrent) в Unix и аналогичных операционных системах.
Она включает в себя закладки, управление заданиями, поддержку библиотеки readline, встроенную команду зеркального отображения и поддержку параллельной передачи нескольких файлов.
lftp доступен для установки из репозиториев по умолчанию с помощью диспетчера пакетов, как показано ниже.
NcFTP
NcFTP — это бесплатный кроссплатформенный FTP-клиент и первая в истории альтернатива стандартной FTP-программе, разработанная для упрощения использования и нескольких улучшений функций и производительности FTP.
Его функции включают в себя повторный набор номера, фоновую обработку, автоматическое возобновление загрузки, завершение имени файла, индикаторы выполнения, поддержку других утилит, таких как ncftpput и ncftpget.
NcFTP доступен для установки из репозиториев по умолчанию с помощью диспетчера пакетов.
cbftp
ctftp — это гибкий клиент FTP / FXP, который позволяет пользователям безопасно и эффективно передавать большие файлы без использования электронной почты. Обычно он работает в командной строке, но вы можете запустить его в полу-GUI, используя ncurses.
Его функции включают в себя внутренний просмотрщик, который поддерживает несколько кодировок, листинг с пропуском, удаленные команды для команд вызова UDP, таких как race, load, fxp, raw, idle и т. Д., И шифрование данных с помощью AES-256, среди прочего.
Yafc — это FTP-клиент с открытым исходным кодом, разработанный для замены стандартной программы FTP в системах Linux с поддержкой POSIX-совместимых систем.
Он полностью бесплатен с богатым списком функций, который включает в себя рекурсивный get / put / fxp / ls / rm, организацию очередей, завершение табуляции, псевдонимы и поддержку SSH2 и прокси.
Yafc доступен для установки из репозиториев по умолчанию, используя менеджер пакетов.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Настройка FTP-сервера vsFTPd на CentOS 7
На текущий момент есть две удачные реализации FTP-сервера для Linux: vsFTPd и proFTPd. В данной инструкции речь пойдет о первом, так как его актуальная версия более свежая, в то время, как последняя версия proFTPd выпущена в 2013 году.
Установка и базовая настройка vsFTPd
Запускаем процесс установки:
yum install vsftpd
После открываем на редактирование следующий файл:
И приводим его к следующему виду:
allow_writeable_chroot=YES
pasv_min_port=40900
pasv_max_port=40999
* первые две строчки мы редактируем: anonymous_enable разрешает подключение анонимных пользователей, поэтому мы отключаем такую возможность; chroot_local_user запрещает выход за пределы домашней директории пользователя. Третью, четвертую и пятую строки мы дописываем — allow_writeable_chroot разрешает подключения пользователю, у которого есть права на запись в корневую директорию; это диапазон динамических портов, которые будут использоваться vsFTPd. Данный диапазон важно указывать, если используется брандмауэр. Сам диапазон можно задать любой из незарегистрированных портов.
Отключаем SELinux следующими командами:
sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config
* первая команда отключит SELinux, вторая — отключит его автозапуск после перезагрузки.
Добавляем правила в брандмауэр для корректной работы FTP-сервера:
firewall-cmd —permanent —add-port=20-21/tcp
firewall-cmd —permanent —add-port=40900-40999/tcp
Разрешаем автозапуск vsFTPd и запускаем его:
systemctl enable vsftpd
systemctl start vsftpd
По умолчанию, к vsFTPd нельзя подключиться с использованием учетной записи root. Поэтому нужно использовать другую пользовательскую запись или создать новую следующей командой:
useradd ftpuser -d /var/www -s /sbin/nologin
* ftpuser — имя учетной записи; /var/www — домашняя директория; /sbin/nologin запрещает локальный вход в систему.
Задаем пароль новому пользователю:
Базовая настройка закончена — можно пробовать подключаться к FTP-серверу.
vsFTPd через TLS
TLS позволяет настроить безопасный FTP, передача данных через который осуществляется по зашифрованному каналу.
Для начала создаем сертификат:
openssl req -new -x509 -days 1461 -nodes -out /etc/vsftpd/vsftpd.pem -keyout /etc/vsftpd/vsftpd.pem -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.dmosk.local/CN=test»
* в данном примере мы создаем самоподписный сертификат на 4 года для URL test.dmosk.local или test. Обратите внимание, это один файл, в котором содержится открытый и закрытый ключи.
Открываем на редактирование конфигурационный файл vsFTPd:
И дописываем в него следующее:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
* где ssl_enable разрешает использование шифрования; allow_anon_ssl разрешает использовать SSL анонимным пользователям; force_local_data_ssl требует использования шифрования, и если установить YES, клиенты без шифрования не смогут подключиться; force_local_logins_ssl также требует подключение по SSL; ssl_tlsv1 — использовать TLS версии 1; ssl_sslv2 — использовать SSL версии 2; ssl_sslv3 — использовать SSL версии 3; rsa_cert_file — путь к сертификату.
systemctl restart vsftpd
Виртуальные пользователи
Устанавливаем пакет compat-db:
yum install compat-db
На всякий случай, сохраняем pam файл для авторизации vsftpd:
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.back
Создаем новый файл со следующим содержимым:
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
session required pam_loginuid.so
* где /etc/vsftpd/virtual_users — файл, в котором мы будем хранить пользователей.
Открываем конфигурационный файл сервера FTP:
И добавляем следующее:
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/home/$USER
* где guest_enable разрешает виртуальных пользователей; guest_username — имя системной учетной записи, от которой работаю виртуальные пользователи; virtual_use_local_privs — виртуальные пользователи с такими же привилегиями, что и локальные; user_sub_token — имя учетной записи храниться в переменной $USER; local_root задает домашнюю директорию виртуальному пользователю.
Создаем файл с виртуальными пользователями со следующим содержимым:
ftp1
passwd1
ftp2
passwd2
* где ftp1 и ftp2 — логины; passwd1 и passwd2 — пароли.
Сразу генерируем из файла базу:
db_load -T -t hash -f /etc/vsftpd/virtual_users /etc/vsftpd/virtual_users.db
Необходимо убедиться, что для пользователей есть соответствующие домашние директории:
И также у системной учетной записи есть соответствующие права:
chown -R :ftp /home/ftp
systemctl restart vsftpd
Хранение пользователей в базе данных
В качестве базы данных можно использовать MySQL или MariaDB. В данном примере будет использоваться последняя.
Устанавливаем СУБД следующей командой:
yum install mariadb mariadb-server
Разрешаем автозапуск и запускаем сервис:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для пользователя root:
mysqladmin -u root password
Запускаем командную оболочку mariadb:
Создаем базу данных и пользователя с правами только на выборку данных:
> CREATE DATABASE vsftpd;
> GRANT SELECT ON vsftpd.* TO ‘vsftpd’@’localhost’ IDENTIFIED BY ‘passwordftp’;
* где vsftpd.* разрешает доступ на все таблицы базы vsftpd; ‘vsftpd’@’localhost’ — учетная запись, у которой есть право подключаться только с локального сервера; passwordftp — пароль для подключения.
Подключаемся к созданной базе и создаем таблицу:
> CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
UNIQUE (`username`)
) ENGINE = MYISAM ;
Теперь добавим пользователя:
> INSERT INTO users (username, password) VALUES(‘ftpm1’, md5(‘password’));
* где ftpm1 — логин, password — пароль.
Выходим из оболочки mariadb:
Устанавливаем модуль pam_mysql:
rpm -Uvh ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/20/Everything/x86_64/os/Packages/p/pam_mysql-0.7-0.16.rc1.fc20.x86_64.rpm
Сохраняем копию pam файла:
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.back
Создаем новый и приводим его к следующему виду:
session optional pam_keyinit.so force revoke
auth required pam_mysql.so user=vsftpd passwd=passwordftp host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=3
account required pam_mysql.so user=vsftpd passwd=passwordftp host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=3
* где user=vsftpd passwd=passwordftp — логин и пароль для подключения к базе данных; db=vsftpd table=users — имя созданной базы данных и таблицы с пользователями; usercolumn=username passwdcolumn=password — название полей, из которых извлекаем логины и пароли для FTP-пользователей.
Настройка завешена, пробуем подключиться.
Возможные проблемы
Ошибка GnuTLS -15: An unexpected TLS packet was received
Ошибка возникает в том случае, когда у учетной записи, от которой идет подключения есть права на запись в корневую домашнюю директорию, а также используется безопасное соединение через TLS. В vsFTPd, по умолчанию, это приводит к ошибке.
Для решения проблемы воспользуйтесь любым из способов:
- Убираем права на запись для корневой директории, например: chmod a-w /var/www
- В конфигурационном файле vsftpd добавляем следующую строку:
allow_writeable_chroot=YES
Если это не помогло, отключите шифрование, закомментировав строку ssl_enable=YES. После этого, при подключении будут появляться более информативные сообщения.
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Ошибка возникает в том случае, когда у учетной записи, от которой идет подключения есть права на запись в корневую домашнюю директорию. В vsFTPd, по умолчанию, это приводит к ошибке.
Для решения проблемы воспользуйтесь любым из способов:
- Убираем права на запись для корневой директории, например: chmod a-w /var/www
- В конфигурационном файле vsftpd добавляем следующую строку:
allow_writeable_chroot=YES
500 OOPS: cannot change directory:/.
Не существует директории или нет прав на чтение.
Проверьте правильность настроек и то, что директория, действительно существует.
SFTP как альтернатива FTP
Если необходимо разово перенести на сервер данные, можно обойтись протоколом SSH File Transfer Protocol или SFTP. Все, что для этого нужно — доступ по SSH и программа клиент, например, WinSCP.
FTP-клиент на CentOS
Для более удобной проверки настроек можно установить FTP-клиент прямо на сервер и с его помощью выполнять подключения.
Для этого выполняем установку клиента:
yum install ftp
И подключаемся к нашему серверу командой:
Вводим логин и пароль, которые будут запрошены. После подключения мы увидим следующее:
Trying ::1.
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name (localhost:root): ftpm1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Для теста можно загрузить файл на сервер FTP:
* сам файл должен быть в каталоге, в котором мы были перед подключение к серверу FTP.
Если мы получим ошибку 500 active mode is disabled, use passive mode instead, просто переключаемся в пассивный режим:
Источник