我们有相当多的脚本,用于使用 Windows 提供的 Internet 上与供应商一起上传和下载文件ftp.exe
。这是通过 SideWinder 代理并通过 FTP 发送给供应商的,但是他们支持 SFTP。
ftp -s:filename
我们利用指定包含 FTP 命令的文本文件;这些命令将在 FTP 启动后自动运行。
ftp -n -s:dir\filename.ftp proxy.example.com
我们想要做的是通过所提供的 Windows 来建立这个隧道,ssh.exe
以便我们可以消除 SideWinder 代理并继续使用现有filename
文件执行 FTP 命令。
使用提供的 Windows 可以实现这一点吗ssh.exe
?ftp.exe
配置是怎样的?
我确实知道有免费的 SFTP 程序。我们正尝试以对现有系统进行最小更改的方式实现此目的。希望它像在 FTP 连接和操作之前的脚本中的 SSH 连接一样简单。
答案1
我知道这不是您想要的答案,但我强烈建议切换到 SFTP。
首先,SFTP 是一种不同的协议,它不仅仅是通过 SSH 隧道的 FTP。因此,通过 ssh.exe 代理 ftp.exe 是行不通的,除非您想访问 SSH 隧道后面的 FTP 服务器。
我个人建议改用温SCP, 免费,它有非常好的 Powershell 支持,因此您可以轻松编写 PowerShell 脚本来解析当前文件并使用 WinSCP 执行所需的命令。
答案2
安全FTP与 SSH 内部的 FTP 隧道不太一样,它实际上是扩大SSH 协议。
在理论,与主机建立 FTP 连接可以通过单独的隧道传输SSH 隧道。为此,您首先应使用 建立与服务器的隧道网络连接ssh.exe
,然后使用 的现有命令ftp.exe
进行文件传输。然而,这会使系统变得相当复杂。
我建议使用SFTP 客户端而是。这样,只需一个命令即可完成安全文件传输。但是,现有的 FTP 命令文本文件可能需要进行一些更新,因为并非所有 FTP 命令都适用于 SFTP。
有多个第三方 SFTP 客户端可用,最近的 Windows 版本甚至有 OpenSSH 客户端作为可选功能。
如果你不介意使用SSH 密钥对于身份验证,我只会使用内置的OpenSSHSFTP 客户端:
sftp.exe -b sftp-commands.txt example.com
如果不能使用 SSH 密钥,另一个流行的客户端是温SCP,还支持密码验证。甚至还有一个指导ftp.exe
用于转换WinSCP 和 SFTP 的旧批处理命令。
此外,即使供应商的服务器支持安全FTP这并不一定意味着它也支持所有SSH功能。尽管 SFTP 使用 SSH 作为其底层协议,但许多 SFTP 提供商将 SSH 限制为仅使用 SFTP,原因是安全原因. 这可以有效排除使用单独的 FTP SSH 隧道。