Я использовал это руководство для установки 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:
(Где красный и оранжевый — имя пользователя и имя компьютера соответственно)
Определены правила 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
бесполезна с моей стороны.
Во-вторых, закомментируйте или удалите строки, начинающиеся с ForceCommand
if exist.
Это помогает устранить большинство неизвестных ошибок клиентов SFTP. Однако есть побочный эффект, заключающийся в том, что клиенты SSH будут использовать CMD в качестве оболочки по умолчанию.
Чтобы использовать PowerShell в качестве оболочки по умолчанию, отредактируйте конфигурацию клиента SSH (обычно она находится по адресу ~/.ssh/config
):
Host <host>
...
RemoteCommand powershell