我有一台使用 CoreFTPServer 的 Windows 服务器,与该服务器上的任何 SFTP 站点的任何连接都给出类型 2(协议错误)。这似乎是针对任何用户或 IP 与服务器建立的任何连接。
Error: Server sent disconnect message
Error: type 2 (protocol error)
Error: "key check failed"
Error: Could not connect to server
有谁知道为什么连接被阻止?
谢谢,
艾略特
答案1
我们遇到了同样的问题,我们可以通过从 CoreFTP-Server 上的公钥文件中删除所有换行符和注释来解决这个问题。
如果您使用 PuTTY 密钥生成器生成密钥,请将纯密钥字符串复制到文本文件中,而不是使用“保存公钥”按钮。
答案2
您使用什么客户端进行测试?无论如何,我会尝试使用远程FTP和温SCP。
如果错误仍然存在,您可能需要增加日志记录 - 有很多不同的密钥检查可能出错。
常见错误可能包括主机密钥已更改。我记得 CFTPS 每天都会这样做,因此您可能需要检查目录%TEMP%
,cftpskey.pem
看看它是否与客户端保存的内容不同。(请记住,SSH 不喜欢更改主机密钥)。
如果我没记错的话,你应该通过将设置cftpskey.pem
为只读来防止发生此问题。由于密钥似乎已经不同步,我建议在客户端重置主机缓存。
对于 putty / psftp,您可以在系统注册表中找到它们
HKCU\Software\SimonTatham\Putty\SshHostKeys
答案3
我在 CoreFTP 服务器的客户端遇到了这个问题,通过告诉 OpenSSH 客户端不要尝试任何密钥验证,我能够进行连接:
sftp -oPubkeyAuthentication=no user@url
答案4
您可能应该对这个问题添加一些细节:
这些错误消息是由连接客户端报告的还是在服务器日志文件中?
服务器以前是否正常工作,或者这是一个失败的新安装?
您使用什么 SFTP 客户端尝试访问服务器?
您是否尝试使用基于密钥的身份验证、密码交互或其他形式的身份验证?
“密钥检查失败”错误可能意味着客户端正在尝试使用无效密钥进行连接,或者服务器设置为仅基于密钥的访问,而客户端正在尝试使用其他方法(例如“密码交互”)进行身份验证。
我从未使用过 CoreFTPServer(我在 Linux 和 Windows 上都使用过 OpenSSH(在 Windows 上通过 cygwin,但也有其他可用端口)),但如果基于密钥的身份验证以前一直在工作并突然停止,请检查文件和目录的所有权以及服务器上密钥文件的权限——人们在使用 OpenSSH 时经常看到的一个问题是,它会拒绝使用以不安全的方式存储的密钥(即在世界可写的目录中)。
如果客户端在尝试进行身份验证之前就报告了此错误,那么它可能是因为服务器的指纹未被识别而做出反应(即它是新安装的,或者已经以某种重大方式更改,从而改变了服务器的身份)。虽然如果这是问题所在,我希望使用“指纹”而不是“密钥”,但有些人会混淆这两个术语,因此软件可能会在错误消息中使用错误的术语。