通過 SSH 的 Windows FTP
我們有相當多的腳本用於使用提供的 Windows 在 Internet 上與供應商上傳和下載文件
ftp.exe
。這是通過 SideWinder 代理的,並且是通過 FTP 發送給供應商的,但是他們支持 SFTP。我們利用
ftp -s:filename
which指定一個包含 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 連接一樣簡單。
我知道這不是您想要的答案,但我強烈建議切換到 SFTP。
首先,SFTP 是一種不同的協議,它不僅僅是 SSH 隧道上的 FTP。因此,通過 ssh.exe 代理 ftp.exe 將不起作用,除非您想訪問 SSH 隧道後面的 FTP 伺服器。
就個人而言,我建議切換到WinSCP,它是免費的,它具有非常好的 Powershell 支持,因此您可以輕鬆編寫 PowerShell 腳本來解析目前文件並使用 WinSCP 執行所需的命令。
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
如果不能使用 SSH 密鑰,另一個流行的客戶端是WinSCP,它也支持密碼驗證。甚至還有為 WinSCP 和 SFTP轉換舊批處理命令的指南。
ftp.exe
此外,即使供應商的伺服器支持SFTP,也不一定意味著它也支持所有SSH功能。儘管 SFTP 使用 SSH 作為其底層協議,但出於安全原因,許多 SFTP 提供商將 SSH 限制為僅使用 SFTP 。這可以有效地排除對 FTP 使用單獨的 SSH 隧道。