Для начала обновите пакеты командами
sudo apt-get update
sudo apt-get upgrade
В терминале дайте команду
sudo apt-get install proftpd
Бывает, что proftpd никак не хочет устанавливаться, тогда попробуйте поставить vsftpd.
При установке выдается окно с вопросом Запуск proftpd?, стрелками на клавиатуре выберем - через inetd, нажмем Tab, чтобы перейти на Ok и затем Enter. Установка продолжится. По завершении установки надо отредактировать файл конфигурации proftpd.conf командой
sudo nano /etc/proftpd/proftpd.conf
Проверьте параметр ServerType - должен быть standalone. Раскомментируйте строку DefaultRoot, т.е. удалите в начале строки символ #. По умолчанию стоит символ ~, что в Linux означает домашний каталог. Если так и оставить, то со временем в домашнем каталоге получится каша из файлов. Можно указать /, т.е. корневой каталог, но это небезопасно. Если вы держите сайт на WordPress, то можете указать в качестве каталога FTP сервера каталог сайта, т.е. /var/www или /var/www/html. Обычно бывает FTP доступ к каталогу /srv/ftp. Он создается при установке proftpd. Сохраните изменения и выйдите из nano. Осталось перезапустить proftpd, чтобы изменения вступили в силу. Сделайте это командой
sudo /etc/init.d/proftpd restart
Для проверки работы FTP сервера вам нужно знать IP адрес Raspberry Pi в локальной сети. Для этого в терминале дайте команду hostname -I (заглавная i). На другом компьютере в адресной строке браузера введите, например:
ftp://192.168.1.33
У меня IP адрес Raspberry Pi 192.168.1.33, у вас, естественно, другой. Браузер запросит логин и пароль. Вводим pi и пароль raspberry, если вы их не меняли. В окне браузера появится содержимое каталога, к которому разрешен FTP доступ. Если вы в параметрах proftpd.conf указали DefaultRoot /srv/ftp, то в каталоге увидите всего один файл welcome.msg. При попытке записать туда какой-либо файл, скорее всего, ничего не произойдет. Владелец этой папки root и пользователям разрешено только чтение каталога. В терминале изменим владельца и права доступа командами:
sudo chown -R pi /srv/ftp
sudo chmod -R 777 /srv/ftp
Иногда может понадобиться дать команду
sudo chgrp -R pi /srv/ftp
Для удобства пользования установим FTP клиент. На компьютере WIndows в популярной программе Total Commander он уже установлен. Осталось его настроить. В меню Total Commander щелкните пункт FTP и выберите Соединиться с FTP-сервером... В окне Соединение с FTP-сервером нажмите кнопку Добавить. В окне Настройка FTP-соединения Имя соединения - введите, какое хотите. В строке Сервер [Порт] вводим IP адрес Raspberry Pi, в строке Учетная запись вводим pi, в строке Пароль - raspberry и нажимаем кнопку Ok.
Проверим работу FTP клиента. Снова в меню щелкаем FTP и выбираем Соединиться с FTP-сервером.. В списке серверов должно появиться имя вашего соединения. Выделим его и нажмем Соединиться. Ждем и, наконец, в одной из панелей Total Commander появится содержимое FTP каталога Raspberry Pi, обычно это диск О:.
Теперь вы можете загружать файлы на Raspberry Pi или скачивать их на свой компьютер.
На компьютере Windows я использую файловый менеджер FAR, в нем настройка FTP клиента аналогична. В одной из панелей в списке дисков выбираем NetBox. Нажимаем Shift+F4 для добавления сессии. В окне Настройка подключения выбираем протокол - FTP, имя сервера - ввел 192.168.1.33, имя пользователя - pi, пароль - raspberry. Нажимаем Подключиться. В программе есть возможность сохранить сессию, чтобы не вводить каждый раз логин и пароль или, в целях безопасности, не сохранять сессию, но тогда при подключении придется вводить параметры заново.
Если вам нравится Filezilla, используйте ее. Есть версия для LInux. На компьютере Linux удобно использовать программу gftp, установить можно командой
sudo apt-get install gftp
Для подключения к Raspberry Pi в поле Сервер введите IP адрес Raspberry Pi, пользователь - pi, пароль - raspberry. Для подключения щелкаем в левом верхнем углу по значку экранчиков. В правой панели программы появится каталог Raspberry Pi. Для перемещения выделяем файлы и щелкаем по стрелкам, расположенным между панелями (туда и обратно).
Также можно подключиться к FTP серверу из командной строки
из Linux
из Windows
при подключении может выскочить предупреждающее окно. Нажмите Разрешить доступ.
Неполный список FTP команд:
open имя_сервера - открыть соединение
- открывает соединение с сервером. Это имя можно указать сразу при вводе команды, загружающей клиента: ftp ftp.karelia.ru.
cd имя_директории - сменить каталог
- осуществляет переход в другой рабочий каталог на FTP-сервере.
dir [имя_файла] - выдать список файлов
- выдает список файлов в текущей директории. Не забывайте, что можно использовать шаблоны групповых операций.
get имя_файла [имя_локального_файла] - переписать файл
- переписывает файл с удаленного компьютера на локальный. Если указано имя локального файла, то записывает его под этим именем, иначе - в каталог по умолчанию.
mget [имя_файла] - переписать группу файлов
- то же самое, что и get, но разрешается использовать шаблоны. Перед копированием каждого файла будет запрашиваться подтверждение. Для отмены подтверждений введите prompt.
prompt - отменяет подтверждение в командах mget и mput.
put имя_файла [имя_удаленного_файла] - записать файл на сервер
-переписывает файл с локального компьютера на удаленный под именем имя_удаленного_файла. Если оно не указано, то файл записывается в текущий каталог с именем локального файла. Команда запрещена для анонимных пользователей
mput [имя_файла] - записать группу файлов
- то же самое, что и put, но разрешается использовать шаблоны. Перед записью каждого файла будет запрашиваться подтверждение. Для отмены подтверждений введите prompt.
ascii - устанавливает ascii-способ передачи файлов. Используется для пересылки файлов-текстов на английском языке. Однако для надежности лучше использовать binary.
binary - устанавливает двоичный способ пересылки файлов. При этом файл при передаче не перекодируется и записывается в неизменённом виде. Это наиболее надежный способ передачи файлов.
close - закрывает соединение с данным сервером и производит возврат в командный режим. Эта команда автоматически выполняется при выходе из FTP-клиента.
quit - выход из FTP-клиента.
user - регистрирует на текущем сервере с новым именем. Используйте эту команду, если Вы первый раз по ошибке неправильно ввели имя анонимного пользователя и не хотите снова перенабирать команду open.
lcd [имя_директории]
- осуществляет переход на локальном компьютере в указанный каталог.
pwd
- выводит на экран текущий каталог на удаленном компьютере.
system
- выводит на экран тип операционной системы на удаленном компьютере.
help [FTP-команда] - помощь
- выдает краткую информацию о командах FTP-клиента или о конкретной указанной команде.
Существует безопасный протокол SFTP, он примечателен тем, что для его работы можно не устанавливать на удаленном компьютере FTP - сервер. Достаточно работающего протокола SSH [4, с. 212].
Если будет подключаться по имени домена, то не забудьте в роутере пробросить для FTP порт 21 (port forwarding). Если будете использовать SFTP (SSH), то пробросьте еще порт 22.
Пример подключения в Linux и список команд этого протокола:
bor@bor-To-be-filled-by-O-E-M ~ $ sftp pi@example.ddns.net
Warning: Permanently added the ECDSA host key for IP address '178.210.66.127' to the list of known hosts.
pi@example.ddns.net's password:
Connected to example.ddns.net.
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afPpRr] remote [local] Download file
reget [-fPpRr] remote [local] Resume download file
reput [-fPpRr] [local] remote Resume upload file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afPpRr] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
rename oldpath newpath Rename remote file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
sftp> bye
bor@bor-To-be-filled-by-O-E-M ~ $
На запрос пароля введите пароль SSH. Если к Raspberry Pi настроен доступ через интернет, то вы можете скачивать (get) или загружать (put) на Raspberry Pi файлы так же, как и в локальной сети. Поддерживается повторная закачка файлов (reget, reput). Есть в списке команды навигации по каталогам, управления правами доступа и некоторые другие.
Чтобы попробовать sftp в Windows, установите программу PuTTY. Запустите командную строку от имени администратора и перейдите в каталог программы. Найдите файл psftp.exe. Запуск аналогичен Linux, примерно так: psftp pi@example.ddns.net. При первом запуске выводится сообщение и в конце вопрос - Store key in cache (y/n)? Нажмите клавишу y.
Например, вы можете установить Raspberry Pi на даче и по интернету в браузере просматривать графики температур датчиков. Когда данных накопится много (допустим, за месяц), браузер выдает ошибку или выводит вопрос - Подождать?. Тогда я скачиваю по sftp файлы данных на домашний компьютер, удаляю устаревшие данные и обновленные файлы по sftp снова загружаю на Raspberry Pi. Графики становятся короче и браузер их быстро загружает.
Чтобы иметь доступ по имени домена (имя сайта), а не только по IP адресу, вам надо получить доступ по интернету. Как настроить доступ к Raspberry Pi по интернету, можно прочитать в статье Как получить доступ по интернету к датчикам в квартире. При использовании sftp не забудьте добавить public key в файл known_hosts на Raspberry Pi. Как указано выше, не забывайте пробрасывать порты 21 (FTP) и 22 (SSH) в настройках port forwarding роутера, в локальную сеть которого включен Raspberry Pi.
В Windows удобно использовать утилиту WinSCP
Список команд sftp ограничен. Если вы имеете доступ по интернету, то для выполнения других команд в терминале используйте протокол ssh. Введите команду ssh pi@example.ddns.net, на запрос введите пароль для ssh и вы получите доступ к командной строке терминала на Raspberry Pi. Для выхода наберите exit.
Статья обновлена 11.09.2018
Использованные ресурсы.
1. http://tepka.ru/ftp/5.htm
2. http://student-proger.ru/2013/01/raspberry-pi-ustanovka-i-nastrojka-po/
3. Петин В. А. Микрокомпьютеры Raspberry Pi. Практическое руководство. СПб.: БХВ-Петербург, 2015. 240 с.
4. Шоттс У. Командная строка Linux. Полное руководство. — СПб.: Питер, 2017. — 480 с.
William E. Shotts The Linux command line, no starch press, San Francisco, 2012
|