Обновлять:

Обновлять:

Я использовал это руководство для установки OpenSSH изWinSCP'sВеб-сайт.

Я использовал msiустановщик, указанный на странице github.https://github.com/PowerShell/Win32-OpenSSH/releases.

Сервер, похоже, работает, но при попытке входа я получаю:

---------------------------
Error
---------------------------
Connection has been unexpectedly closed. Server sent command exit status 1.
---------------------------
Cannot initialize SFTP protocol. Is the host running an SFTP server?
---------------------------
OK   Reconnect   Help   
---------------------------

На серверной машине, похоже, запущен sshd, прослушивающий порт 22 (скопировано из TCPview):

Процесс ПИД Протокол Состояние Местный адрес Местный порт Удаленный адрес Удаленный порт Создать время Имя модуля
sshd.exe 5844 ТКП Слушать 0.0.0.0 22 0.0.0.0 0 19.08.2022 18:49:33 sshd
sshd.exe 5844 TCPv6 Слушать :: 22 :: 0 19.08.2022 18:49:33 sshd

Я не менял настройки по умолчанию.sshd_config

Обновлять:

Использование Putty и того же имени пользователя и пароля работает, и я могу просматривать каталоги.

Вот putty против WinScp:

putty_vs_winscp

(Где красный и оранжевый — имя пользователя и имя компьютера соответственно)

Определены правила FW:

Правила_брандмауэра

решение1

Проблема была в том, что его sftp-server.exeне было в PATH. Добавление пути установки C:\Program Files\OpenSSHи перезапуск службы Restart-Service sshdрешили проблему.

Я диагностировал, установив

SyslogFacility LOCAL0
LogLevel DEBUG3

вC:\ProgramData\ssh\sshd_config

И заметив, что он жалуется, что не может его найти

subsystem: cannot stat sftp-server.exe: No such file or directory

решение2

Чтобы решить эту проблему, откройте конфигурацию сервера SSH в Windows (обычно находится по адресу C:\ProgramData\ssh\sshd_config).


Сначала замените sftp-server.exeна строку <absolute-path-to>/sftp-server.exe.

Похоже, эта настройка PATHбесполезна с моей стороны.


Во-вторых, закомментируйте или удалите строки, начинающиеся с ForceCommandif exist.

Это помогает устранить большинство неизвестных ошибок клиентов SFTP. Однако есть побочный эффект, заключающийся в том, что клиенты SSH будут использовать CMD в качестве оболочки по умолчанию.

Чтобы использовать PowerShell в качестве оболочки по умолчанию, отредактируйте конфигурацию клиента SSH (обычно она находится по адресу ~/.ssh/config):

Host <host>
  ...
  RemoteCommand powershell

Связанный контент