更新:

更新:

我使用本指南从WinSCP 的网站。

我使用了msigithub 页面上列出的安装程序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 复制):

过程 PID 协议 状态 本地地址 本地端口 远程地址 远程端口 创建时间 模块名称
SSHD 工具 5844 TCP 0.0.0.0 22 0.0.0.0 0 2022 年 8 月 19 日下午 6:49:33 sshd
SSHD 工具 5844 TCPv6 :: 22 :: 0 2022 年 8 月 19 日下午 6:49:33 sshd

我没有改变默认设置sshd_config

更新:

使用 putty 和相同的用户名和密码就可以浏览目录。

这是 putty 与 WinScp 的比较:

putty_vs_winscp

(其中红色和橙色分别表示用户名和机器名称)

FW 规则定义:

防火墙规则

答案1

问题是 不在sftp-server.exePATH。添加安装路径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

要解决该问题,请打开 Windows 上的 SSH 服务器配置(通常位于C:\ProgramData\ssh\sshd_config)。


首先,sftp-server.exe用行替换<absolute-path-to>/sftp-server.exe

看来这个设置PATH对我来说是没用的。


其次,注释或删除以ForceCommandif exist 开头的行。

它有助于解决 SFTP 客户端的大多数未知错误。但是,这样做的副作用是 SSH 客户端将使用 CMD 作为默认 shell。

要使用 PowerShell 作为默认 shell,请编辑 SSH 客户端配置(通常位于~/.ssh/config):

Host <host>
  ...
  RemoteCommand powershell

相关内容