1

我在我的开发机器上启用了 Windows 远程处理,使用 FreeSSHd 和 PuTTY 作为 SFTP 服务器和客户端。我只使用公共身份验证,将私钥加载到 PuTTY 的选美中。

我使用 C# 代码(使用 Powershell 自动化程序集和命名空间)使用 Windows Powershell Remoting 来调用 PuTTY 的 PSFTP 命令行工具(在 PATH 环境系统变量中包含 PuTTY 的二进制文件夹)。

如果我打开 Windows Powershell 并执行此调用:invoke-command -computername 127.0.0.1 -filepath c:\temp\sftp\invoke.ps1

我收到一个错误:

致命:断开连接:不支持可用的身份验证方法(服务器发送:公钥)

检查 FreeSSHd 的日志时,我只看到以下内容:

  • 12-06-2011 14:12:04 IP 127.0.0.1 SSH 连接尝试。
  • 12-06-2011 14:12:04 IP 127.0.0.1 SSH 断开连接。
4

1 回答 1

1

(解决方法)

远程 powershell 会话(Powershell 管道)和在该会话中调用的命令的组合似乎是一个问题。我正在使用 PageAnt 从私钥获取解密的签名,但查看日志,似乎 PSFTP 无法“看到”PageAnt,这导致身份验证失败。

我解决了这个问题(关于安全性不是很推荐,但这都是在安全/非互联网环境中):我使用 PSFTP -i 选项来显示私钥位置,并使用 -pw 选项来提供密码。然后调用成功。

希望有更好的方法来做到这一点......

于 2012-03-09T06:24:52.627 回答