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 连接一样简单。
我知道这不是您想要的答案,但我强烈建议您切换到 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 隧道。