windows powershell 远程处理无法调用 PuTTY
我在我的开发机器上启用了 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
我收到错误:
致命:已断开连接:没有可用的支持的身份验证方法 (服务器发送:公钥)
当检查 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 已断开连接。
I have windows remoting enabled on my dev machine, using FreeSSHd and PuTTY as a SFTP server and client. I am using public authentication only, having the private key loaded in PuTTY's Pageant.
I use Windows Powershell Remoting to perform a call to PuTTY's PSFTP command line tool (having the binary folder of PuTTY in the PATH environment system variable), using C# code (using the Powershell automation assembly & namespace).
If I open Windows Powershell and perform this call:
invoke-command -computername 127.0.0.1 -filepath c:\temp\sftp\invoke.ps1
I get an error:
Fatal: Disconnected: No supported authentication methods available
(server sent: publickey)
When checking FreeSSHd's log I see only this:
- 12-06-2011 14:12:04 IP 127.0.0.1 SSH connection attempt.
- 12-06-2011 14:12:04 IP 127.0.0.1 SSH disconnected.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
(解决方法)
这似乎是远程 powershell 会话(Powershell 管道)和该会话中调用的命令组合的问题。我当时使用PageAnt从私钥中获取解密后的签名,但是查看日志,似乎PSFTP无法“看到”PageAnt,这导致身份验证失败。
我解决了这个问题(在安全性方面不太推荐,但这都是在安全/非互联网环境中):我使用 PSFTP -i 选项来显示私钥位置,并使用 -pw 选项来提供密码。然后调用成功。
希望有更好的方法来做到这一点......
(workaround)
It seems to be an issue with the combination of a remote powershell session (the Powershell pipeline) and the command being invoked within that session. I was using PageAnt to get the decrypted signature from the private key, but looking at the log, it seems that PSFTP cannot 'see' PageAnt, which causes the authentication to fail.
I resolved this (not very recommendable regarding security, but this is all within a secure/non-internet environment): I used the PSFTP -i option to reveal the private key location, and the -pw option to provide the password. Then the call succeeds.
Hopefully there is better way doing this...