现象
程序无法连接到某个SFTP服务器,但是可以连接其它SFTP服务器。
应用日志中只报“连接错误”,没有详细信息。
使用的是用户名/密码的方式,未使用密钥(对方服务器无我方身份信息)。
原因与分析
经过其它工具的测试和提取日志,发现服务器要求:
Auth Type: Keyboard-interactive
SFTP服务器的认证方式除了我们熟悉的,公钥(密钥),用户名/密码,其实还有几种方式。
- PublicKey - 公钥(密钥)
- Password - 用户名/密码
- Keyboard-interactive - 键盘交互
- RHosts
- HostBased - 基于主机
此例中SFTP服务器要求键盘交互,并发送了Password: 的提示,而程序没有响应。
解决办法
修改程序,增加SFTP对于键盘交互认证方式的支持。
代码
无
不同的开发工具支持的方式不同,故不强调代码。
测试结果
可以正常登录。