====== SFTP ====== ===== Немного теории ===== [[wpru>SFTP]] (англ. SSH File Transfer Protocol) — протокол, предназначенный для работы с файлами поверх надёжного и безопасного соединения. Протокол разработан и чаще всего используется как расширение к [[wpru>SSH|SSH-2]]. SFTP не следует путать с FTP через SSH и [[:ftp:ftps|FTPS]]. \\ В SSH используется протокол аутентификации сторон на основе [[wpru>RSA]] или [[wpru>DSA]], но допускается также аутентификация при помощи пароля. Для шифрования данных используется [[wpru>Симметричное_шифрование|симметричное шифрование]], алгоритмы [[wpru>Advanced_Encryption_Standard|AES]], [[wpru>Blowfish]] или [[wpru>3DES]]. Целостность данных проверяется с помощью [[wpru>HMAC]]-[[wpru>SHA1]]/HMAC-[[wpru>MD5]]. Протокол SSH-2 устойчив к атакам прослушивания трафика («снифинг») и атакам путём присоединения посередине (англ. session hijacking). Наш SFTP-сервер использует порт **#@SFTP_PORT@#** ===== Использование в FileZilla ===== На вкладке //**Общие**// в //**Менеджере Сайтов**// выберите протокол //**SFTP - SSH File Transfer Protocol**// и укажите порт //**#@SFTP_PORT@#**//: {{gallery> sftp-filezilla.png?300x300&lightbox}} \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ При первом подключении //FileZilla// попросит проверить и принять ключ сервера. На этом этапе имеет смысл сверить контрольную сумму ключа: {{gallery> sftp-filezilla-key.png?300x300&lightbox}} Контрольные суммы нашего актуального ключа: \\ SHA256: #@SFTP_SHA256@# \\ MD5: #@SFTP_MD5@# Чтобы этот диалог более не появлялся, отметьте опцию //**Всегда доверять этому ключу**// \\ \\ \\ \\ \\ ===== Альтернативный способ проверки ===== Выполнить команду: \\ ''$ ssh-keygen -E sha256 -lf <(ssh-keyscan -t rsa -p #@SFTP_PORT@# #@OUR_DOMAIN@# 2>/dev/null)'' \\ ...и проверить контрольную сумму: \\ ''2048 SHA256:#@SFTP_SHA256@# [#@OUR_DOMAIN@#]:#@SFTP_PORT@# (RSA)'' \\ Чтобы получить контрольную сумму MD5, вместо опции ''-E sha256'' можно использовать ''-E md5''. ===== Использование в файловых менеджерах ===== Большинство современных файловых менеджеров, исключая //Проводник Windows// поддерживают SFTP "из коробки". Достаточно ввести в адресной строке ''sftp:%%//%%**$USERNAME**@#@OUR_DOMAIN@#:**#@SFTP_PORT@#**'' (где ''**$USERNAME**'' -- имя пользователя), //#@SFTP_PORT@#// -- порт подключения и ввести пароль. Далее можно будет работать с файлами через SFTP так же, как с локальными. Вот так это выглядит в [[wp>Nemo_(file_manager)|Nemo]] (файловом менеджере среды рабочего стола Cinnamon): {{gallery> sftp-nemo.png?300x300&lightbox}} Рекомендуем добавить этот адрес в закладки ===== Использование в lftp ===== Для удобства использования SFTP в [[https://lftp.yar.ru/|lftp]] рекомендуем использовать следующую команду: ''**set sftp:auto-confirm on;**''.\\ (Здесь и далее ''**жирным**'' выделены вводимые команды) ''$ **lftp -p #@SFTP_PORT@# sftp:%%//%%#@OUR_DOMAIN@#**\\ lftp #@OUR_DOMAIN@#:~> **set sftp:auto-confirm on;**\\ lftp #@OUR_DOMAIN@#:~> **user megaseed**\\ Password:\\ lftp megaseed@#@OUR_DOMAIN@#:~> **ls**\\ drwxrwx--- megaseed/seedbox 173 2021-03-28 20:57:00 .\\ drwxrwx--- megaseed/seedbox 173 2021-03-28 20:57:00 ..\\ -rw-r--r-- megaseed/seedbox 0 2021-03-15 15:32:38 charset test - кириллица.txt'' {{section>:includes#lftp-tip}} ===== Использование в WinSCP ===== {{section>:ftp:winscp#Установка и настройка WinSCP}} [[:ftp:winscp|WinSCP: полная статья]] \\ ===== Достоинства и недостатки ===== * SFTP, работающий внутри сессии SSH, использует, как правило, алгоритм RSA. Таким образом, для безопасной аутентификации необходимо (по крайней мере в первый раз) сверить контрольную сумму ключа сервера с заранее известным значением. С другой стороны, FTPS, использующий [[wpru>X.509]], использует для аутентификации цепочку сертификатов, заканчивающуюся корневым сертификатом в хранилище операционной системы -- что позволяет реализовать равный с https уровень безопасности без каких-либо умственных усилий со стороны пользователя. Однако стоит заметить, что некоторые FTP-клиенты -- например //FileZilla//, не используют системные корневые сертификаты, поэтому первоначальная проверка (и ключа SFTP и сертификата FTPS) все равно возлагается на пользователя. * SFTP может работать в рамках одного соединения, которое **всегда** является шифрованным -- в отличие от FTPS, в котором разные соединения для управления и передачи данных шифруются раздельно, что может в некоторых случаях (например при неправильной настройке сервера или неочевидных настроек в клиенте) привести к "частичному" шифрованию и утечке данных. * SFTP не требует сложных настроек файервола как со стороны сервера, так и со стороны клиента. * SFTP-серверы, предназначенные для доступа к файлам, как правило, используют собственные реализации сервера SSH (а не используют системную SSH-службу). Поэтому чаще всего они работают не на стандартном порту 22, а на произвольно выбранном -- что необходимо учитывать при настройке и подключении SFTP-клиента. ----- [[:howto:инструкции|Читать далее: Инструкции по сидбоксу]] {{section>:includes#gethelp}}