Моему приложению требуется доступ к файлам с удаленного сервера FTPS или SFTP в зависимости от того, к чему хочет подключиться пользователь моего приложения. Мне нужно иметь доступ к содержимому файла в папке или создать папку. 1) Какие свойства входа в систему различаются для серверов FTPS и SFTP, которые должен ввести пользователь? 2) Можно ли каким-либо образом определить, является ли это сервером SFTP или FTPS?
Я создаю плагин SFTP/FTPS для своего приложения, которое может входить на серверы FTPS или SFTP. Какие свойства аутентификации различаются для FTPS и SFTP?
Ответы (1)
SFTP не имеет аутентификации. Предполагается, что протокол SFTP используется через соединение SSH, поэтому для аутентификации он использует SSH. Таким образом, применяются все механизмы аутентификации SSH. Список таких механизмов обширен — можно пройти аутентификацию по паролю, приватному ключу («аутентификация с открытым ключом»), сертификату X.509 (не популярный вариант), интерактивному диалогу с клавиатурой (запрос-ответ), а также через GSS. -API вы можете использовать Kerberos и, возможно, другие механизмы. FTPS как FTP-over-TLS также может использовать различные механизмы. FTP использует имя пользователя/пароль по умолчанию, но потенциально можно реализовать некоторые хитрые механизмы с помощью команды SITE. Протокол TLS включает аутентификацию на стороне клиента с использованием сертификатов X.509, предварительно общих симметричных ключей, простых ключей PKI, ключей OpenPGP.
SFTP и FTP/FTPS — это совершенно разные протоколы. Сервера работают на разных портах. Если вы хотите реализовать автоопределение протокола, вы можете попробовать следующее: подключитесь к серверу, и если он отправит приветственное SSH-сообщение в течение 200-500 мс, вы знаете, что это SSH (и, возможно, SFTP) сервер. Если он отправляет приветственное FTP-сообщение, это FTP-сервер (включая явный режим TLS FTPS). Если он ничего не отправляет, то это может быть сервером TLS, и у вас может быть неявный FTPS через это соединение.
keyboard-interactive
метод аутентификации, который позволяет серверу запрашивать что угодно, хотя большинство серверов используют его только для запроса имени пользователя и пароля. - person Lukas Pokorny   schedule 23.10.2015keyboard-interactive
сервер SFTP/SSH может запрашивать любые поля, которые он хочет (см. tools.ietf.org/html/rfc4256#page-5 для получения подробной информации). На практике почти все серверы просто запрашивают пароль (и большинство из них используют для этого метод аутентификацииpassword
), но на самом деле существуют серверы SFTP/SSH, которые запрашивают и другую информацию (это полезно для многофакторной аутентификации, Например). - person Lukas Pokorny   schedule 30.10.2015