1

Я отключил sftp-server на своем компьютере с Ubuntu, как показано ниже.
Отредактируйте /etc/ssh/sshd_config и закомментируйте эту строку

#Subsystem sftp /usr/lib/openssh/sftp-server

На другом компьютере я запускаю команду sftp для подключения к серверу. Не удалось подключиться.

sftp user@192.168.1.2
subsystem request failed on channel 0
Connection closed

Я также использую FileZilla для подключения к этому компьютеру. FileZilla по-прежнему перечисляет содержимое папки, скачать файл, ...
Filezilla показывает URL sftp://user@192.168.1.2

Какой метод Filezilla использовал для подключения к серверу SSH для передачи файла?

1 ответ1

0

FileZilla внутренне использует PuTTY PSFTP. PSFTP имеет запасной механизм для запуска сервера SFTP, при запуске его через подсистему sftp не удается.

Он ищет двоичный файл sftp-server в общих путях, таких как /usr/lib/sftp-server и /usr/local/lib/sftp-server и в PATH . Я предполагаю, что именно так PSFTP/FileZilla (и другие клиенты, такие как мой WinSCP - подробности см. На странице требований SFTP ) смогут устанавливать соединение SFTP, даже если вы отключите подсистему sftp .

С OpenSSH sftp вы можете добиться того же, используя ключ -s:

-s subsystem | sftp_server

Указывает подсистему SSH2 или путь для сервера sftp на удаленном хосте. Путь полезен, когда на удаленном sshd не настроена подсистема sftp.

Пример:

sftp -s /usr/lib/sftp-server user@192.168.1.2

Чтобы полностью запретить SFTP, вам нужно полностью избавиться от двоичного sftp-server .


Хотя на самом деле это мало что значит. Если вы разрешаете доступ к оболочке (то, что вы делаете, в противном случае механизм отката не сработает), тогда нет смысла отключать SFTP, так как в любом случае можно получить гораздо больший (ущерб), используя доступ к оболочке.


Я полагаю, что резервный механизм существует в основном как способ поддержки серверов SSH-1, у которых не было механизма подсистемы. Но это срабатывает даже в такой ситуации, как ваша.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .