通过 SSH 的 Windows FTP

Abr*_*ver 5 windows ssh ftp sftp

我们有相当多的脚本用于使用提供的 Windows 在 Internet 上与供应商上传和下载文件ftp.exe。这是通过 SideWinder 代理的,并通过 FTP 发送给供应商,但他们支持 SFTP。

我们利用ftp -s:filenamewhich指定一个包含 FTP 命令的文本文件;命令将在 FTP 启动后自动运行。

ftp -n -s:dir\filename.ftp proxy.example.com
Run Code Online (Sandbox Code Playgroud)

我们想要做的是在提供的 Windows 上建立隧道,ssh.exe以便我们可以消除 SideWinder 代理并继续使用现有filename文件进行 FTP 命令。

这是否可以使用提供的 Windowsssh.exe以及ftp.exe配置是什么?

我知道有免费的 SFTP 程序。我们正在尝试通过对现有系统进行最少的更改来实现这一目标。希望它像 FTP 连接和操作之前脚本中的 SSH 连接一样简单。

Stu*_*ggi 7

我知道这不是您想要的答案,但我强烈建议您切换到 SFTP。

首先,SFTP 是一种不同的协议,它不仅仅是通过 SSH 隧道的 FTP。因此,通过 ssh.exe 代理 ftp.exe 将不起作用,除非您想访问 SSH 隧道后面的 FTP 服务器。

就个人而言,我建议切换到WinSCP,它是免费的,它具有非常好的 Powershell 支持,因此您可以轻松编写 PowerShell 脚本来解析当前文件并使用 WinSCP 执行所需的命令。


小智 5

SFTP与 SSH 中的隧道传输 FTP 并不完全相同,它实际上是SSH 协议的扩展

理论上,FTP连接到主机可以通过单独进行隧道SSH隧道。为此,您应该首先使用 建立到服务器的隧道网络连接ssh.exe,然后使用现有的命令ftp.exe来进行文件传输。然而,这会使系统相当复杂。

我建议改用SFTP 客户端。通过这种方式,可以使用单个命令完成安全文件传输。FTP 命令的现有文本文件可能需要进行一些更新,因为并非所有 FTP 命令都与 SFTP 相同。

有几个 3rd 方 SFTP 客户端可用,最近的 Windows 版本甚至将 OpenSSH 客户端作为可选功能

如果您不介意使用SSH 密钥进行身份验证,我将只使用内置的OpenSSH SFTP 客户端:

sftp.exe -b sftp-commands.txt example.com
Run Code Online (Sandbox Code Playgroud)

如果不能选择使用 SSH 密钥,另一个流行的客户端是WinSCP,它也支持密码身份验证。甚至还有一个用于转换WinSCP 和 SFTP 的旧批处理命令的指南ftp.exe

此外,即使供应商的服务器支持SFTP,也不一定意味着它也支持所有SSH功能。尽管 SFTP 使用 SSH 作为其底层协议,但出于安全原因,许多 SFTP 提供商将 SSH 限制为仅使用 SFTP 。这可以有效地排除对 FTP 使用单独的 SSH 隧道。