0

我試圖在Windows的AWS EC2實例上執行FTP腳本來下載文件,但入站連接由於防火牆設置而被阻止。任何人都可以建議什麼應該是適當的防火牆配置,它應該允許入站連接。修改AWS EC2窗口防火牆設置

我害怕使用這些設置,因爲我曾經點擊重置防火牆設置,並且我失去了該實例的遠程登錄訪問權限,我不得不終止它並創建一個新的設置。

謝謝。

@echo off 
echo user username > ftpcmd.dat 
echo password >> ftpcmd.dat 
echo binary >>ftpcmd.dat 
echo cd /Outbound/Archive >>ftpcmd.dat 
echo prompt n >>ftpcmd.dat 
echo get DATA_FEED.xml C:\Users\user\Desktop\Test.xml >> ftpcmd.dat 
echo quit>> ftpcmd.dat 
ftp -n -s:ftpcmd.dat ftp.server.com 
del ftpcmd.dat 

Below is a screen shot of Ec2 firewall settings

+0

如果你想從一臺服務器下載一個文件到你的EC2實例,你應該可以在沒有任何防火牆改變的情況下做到這一點。您是否在VPC網絡或默認EC2中? –

+0

我正在使用默認的EC2。當我運行FTP腳本時,我可以登錄,但是當執行到「get」時,它會掛起一段時間,並關閉命令提示符。 – vkrams

+0

您可以將此腳本添加到您的問題嗎? –

回答

1

簡單的解決方案:

嘗試只是發送binary前加

echo quote pasv >> ftpcmd.dat 

說明:

PASV設置連接到passive mode,這並不需要從服務器的任何傳入連接。這只是一個簡單的客戶端 - 服務器連接。

在主動模式下,客戶端連接到服務器(在您的情況下工作,登錄成功),然後告訴服務器它自己的IP地址和隨機端口,通常高於1023. 服務器然後連接到您的客戶端傳輸數據。 由於您位於防火牆之後,因此失敗。

+1

運氣不一樣的問題。請看這個http://www.pcreview.co.uk/forums/configure-ftp-exe-use-passive-mode-pasv-t3655119.html – vkrams

+1

好吧,有你。如果你不能使用另一個支持被動模式的客戶端,你需要允許你的防火牆和你的ec2安全組的入口在50000以上入口 –

+0

實際上我完全關閉了防火牆。儘管如此,我得到了同樣的錯誤 - 遠程關閉連接主辦。並且在安全組中我包含了TCP 0-65535端口。即使那時沒有運氣。 – vkrams

1

AWS文檔有 -

文件傳輸協議(FTP)具有通過由客戶端向它的地址返回給所述服務器的PORT命令。服務器然後連接到該地址的客戶端以發送文件數據。如果客戶端查找自己的內部地址並將其發送給服務器,則連接將失敗。在這個特定的情況下,這個問題有兩種解決方案。首先,配置客戶端發送其公共IP地址。其次,客戶端可以使用「被動FTP」,它只與服務器建立連接,而不是從服務器到客戶端。一般來說,編碼發送到外部服務器的數據中的本地地址和端口號的應用程序可能有NAT問題。必須始終注意發送公共地址,而不是內部地址。 我們推薦使用被動模式,除非它不被FTP服務器支持。

我沒有嘗試公開我的AWS實例的IP,並且我們知道FTP.EXE不支持被動模式,所以我使用了NcFTP並且我可以下載該文件。