我在我的开发机器上启用了Windows远程处理,使用FreeSSHd和PuTTY作为SFTP服务器和客户端。我只使用公共身份验证,在PuTTY的Pageant中加载了私钥。
我使用Windows Powershell Remoting使用C#代码(使用Powershell自动化程序集和命名空间)执行对PuTTY的PSFTP命令行工具(在PATH环境系统变量中具有PuTTY的二进制文件夹)的调用。
如果我打开Windows Powershell并执行此调用: invoke-command -computername 127.0.0.1 -filepath c:\ temp \ sftp \ invoke.ps1
我收到错误:
致命:已断开连接:没有可用的支持身份验证方法 (服务器发送:publickey)
检查FreeSSHd的日志时,我只看到这个:
答案 0 :(得分:1)
(解决方法)
远程PowerShell会话(Powershell管道)与该会话中调用的命令的组合似乎是一个问题。我使用PageAnt从私钥获取解密签名,但查看日志,似乎PSFTP无法“看到”PageAnt,导致身份验证失败。
我解决了这个问题(关于安全性不是很值得推荐,但这都在安全/非互联网环境中):我使用PSFTP -i选项显示私钥位置,并使用-pw选项提供密码。然后呼叫成功。
希望有更好的方法来做这件事......