####禁止自行轉載
####違者必究
####需要轉載請聯系我
因為最近用python寫了一個自動上傳的腳本,想通過FTP把數據上傳到我的服務器。
於是,
興高采烈地打開我一直信任的阿里雲,yum install vsftpd。
bing!成功安裝好,修改配置文件開始
想通過本地模式登錄,先把匿名訪問模式給關了。
anonymous_enable=NO
再把 /etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list 兩個文件中的root刪掉,保證root用戶可以登錄ftp,沒毛病了吧?
systemctl start vsftpd
systemctl enable vsftpd
再重啟,加入開機啟動項!沒毛病了吧?
阿里雲安全組放行全部端口,防火牆關了,SELINUX禁用,沒毛病了吧?
打開python腳本上傳資料,why?錯誤?肯定是python腳本有錯!不可能是我的阿里雲有錯的!
先在腳本加入兩行ftp調試代碼,然后一看!咦!怎么一直在entering passive mode?然后就 ftp:connect:Connect timed out。
好吧,我知識量不夠,那我學!
百度搜一遍,谷歌搜一遍。
百度搜到的全部都是先解釋一下主被動模式,然后叫你關閉passive mode的。。。。。。但是為什么entering passive mode就不行?我不服!
然后谷歌了一番(邊看還要開着個翻譯軟件真的苦啊!~)
最后在某個問答貼看到entering passive mode后邊幾個數字的含義。
附上原帖地址,感謝!
172.18.144.104就是ftp客戶端要連接的ip
139*256+147=35731的意思就是服務端開啟35731端口,然后讓客戶端連接。
我看了一下這個IP,不對啊?!這不是內網ip么?
上阿里雲服務器 ifconfig 看下,原來真的是內網IP。(后來才了解到彈性服務器的真正意義。有興趣的童鞋請百度吧,這里不多說了哦)
然后接下來又是漫長的搜索與學習,以及后來的請阿里雲服務支持。
最終阿里雲給我的答復是,在vsftpd配置文件下添加下面幾行配置。
pasv_enable=YES pasv_address=#我的外網IP pasv_min_port=1024 pasv_max_port=2048 pasv_promiscuous=YES #關閉PASV模式的安全檢查
配置好之后我在阿里雲服務器本身 ftp 連接到本身服務器,成功了!終於能進入passive mode了!
興奮!欣喜若狂!趕緊結束工單,給了個五星好評!
然后回到宿舍,運行一下python自動上傳腳本。、
what?又進入passive mode失敗?entering passive mode(0,0,0,0,xxx,xxx)
肯定是python腳本哪里寫錯了!
檢查一遍又一遍,沒毛病啊!
后來在自己的 linux 備用機 ftp 嘗試連接一下阿里雲的 vsftpd 。
還是不行!我還不死心,借了朋友的服務器連接,還不行!!!
此時我已經折騰了幾天了,天天搜索,問題出在哪里。睡醒就開始搜,舍友睡覺了我也還在搜,天天都是頭發蓬亂,雙眼通紅的狀態。
終於不堪勞累,把問題記好,我放棄了。
直到今天,看到騰訊雲搞年中活動耶,買個玩玩,搭搭服務。
騰訊雲也是兩個IP,一個公網,一個私有。
心里想,FTP服務肯定又沒戲了。肯定和阿里雲一樣。
不過都買了,搭來試試。配置文件:
anonymous_enable=NO
一樣的,/etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list 兩個文件中的root刪掉。
啟動試試?
開阿里雲 ftp 連接,???,連上了???
不信!用linux備用機 ftp 連接,也連上了???
不信!運行python腳本,ftp l連接,連上了???
那一刻很懵逼,彷佛多年以來我覺得很牛逼的東西只是別人的冰山一角。上騰訊雲 ifconfig 看看,居然是內網IP?
為什么同樣 ifconfig 都是內網IP,同樣都是私有IP映射公網IP,騰訊雲可以 ftp 連接,而你阿里雲連這點東西都做不到?
還修改了一大堆配置文件,依然於事無補。而騰訊雲只要簡簡單單的常規配置就可以連接了。
令我有點失望了,阿里雲。