====== 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}}