【问题标题】:Interact with sftp (cygwin) from application on Windows从 Windows 上的应用程序与 sftp (cygwin) 交互
【发布时间】:2011-10-30 16:48:55
【问题描述】:

在 Unix 上,您有像 ExpectEmpty 这样的工具,用于使用伪终端与 sftp 等终端应用程序进行交互。我有一台安装了 cygwin 的 Windows 机器,我的 C# 应用程序需要启动 sftp 会话以将一些文件传输到远程机器。

我从一些这样的代码开始

var p = new Process();

p.StartInfo = new ProcessStartInfo
{
    FileName = "sftp",
    UseShellExecute = false,
    CreateNoWindow = false,
    RedirectStandardInput = true,
    Arguments = username + "@" + server
};

p.Start();
p.StandardInput.WriteLine(password);

问题是sftp 不会从stdin 读取密码,只能从终端读取。这就是 Expect 的用武之地。除了在 cygwin 中安装 Expect 之外,还有什么方法可以从 C# 程序以交互方式向 sftp 发送密码?

【问题讨论】:

  • 您绝对需要通过密码进行身份验证吗?使用公钥认证的问题可能会更小
  • 我同意这会减少问题,我们可以设置无密码会话,但就是这样 - 必须通过代码支持 usrname/pwd 交互。
  • 您不使用纯 .NET sftp 客户端的任何原因(包括身份验证等所有选项)?
  • @Yahia 是否有符合 OpenSSH 的稳定、生产质量的免费 .NET SSH 库?
  • production-quality/compatible/stable 有几个,虽然我使用的那些是商业的......免费的是例如 sshnet.codeplex.comroutrek.co.jp/library/support/download/varaterm/… 虽然我从来没有使用过所以不能说关于生产质量的任何事情

标签: c# ssh cygwin sftp expect


【解决方案1】:

Cygwin 有packages for tons of common UNIX utilities,包括expect 和(可能)为空。理论上你仍然可以使用这些......(并不是说这将是最安全、紧凑或理想的选择......但它是一个选择!)

【讨论】:

  • 干杯,我确实说过“在 cygwin 中安装 Expect 之外”,但如果别无选择,这可能是我们最终的方式。
猜你喜欢
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 2011-07-15
相关资源
最近更新 更多