2011-10-30 48 views
13

我在AWS上設置了一個新的EC2實例,我試圖讓FTP工作來上傳我的應用程序。我已經安裝了VSFTPD作爲標準,所以我沒有改變配置文件中的任何東西(/etc/vsftpd/vsftpd.conf)。上傳到EC2問題。你如何做FTP?

我沒有在安全組中設置端口21,因爲我是通過SSH來完成的。我登錄到我的EC2通過特馬爾像這樣

sudo ssh -L 21:localhost:21 -vi my-key-pair [email protected]

我打開FileZilla的,並登錄到本地主機。一切都很好,直到列出目錄結構。我可以登錄並正確的,一切似乎罰款,你可以看到下面:

Status: Resolving address of localhost
Status: Connecting to [::1]:21...
Status: Connection established, waiting for welcome message...
Response: 220 Welcome to EC2 FTP service.
Command: USER anonymous
Response: 331 Please specify the password.
Command: PASS ******
Response: 230 Login successful.
Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/"
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: EPSV
Response: 229 Entering Extended Passive Mode (|||37302|).
Command: LIST
Error: Connection timed out
Error: Failed to retrieve directory listing

有一些東西,我缺少我的配置文件。需要設置或關閉的設置。我認爲它連接起來很棒,但是當它超時時,你可以拍下我的臉。這意味着開始拖網試試並找到答案!現在沒有運氣。

我正在使用標準的Amazon AMI 64位。我有一個傳統的燈具設置。

任何人都可以引導我走向正確的方向嗎?我已經閱讀了很多關於如何實現這一點的工作,但他們都是不完整的,就好像他們通過打字如何做到了一半而感到無聊。

我很想聽聽你們是怎麼做的。如果它讓生活更輕鬆。你如何將你的應用上傳到EC2實例? (步驟請 - 它節省了大量的時間加上它是一個很好的資源爲其他人。)

回答

36

我想通了,通過安蒂哈帕拉方向救命。

你甚至不需要創建實例的VSFTP設置。你所要做的就是確保FileZilla中的設置正確。

這是我做了(我在Mac上,所以應該是在Windows類似):

  1. 打開文件吉拉並轉到偏好。
  2. 根據偏好設置,點擊sftp並添加一個新的密鑰。這是您的ec2實例的密鑰對。您必須將其轉換爲FileZilla使用的格式。它會給你一個提示轉換
  3. 點擊確定,並返回到站點管理器
  4. 在站點管理器中的EC2公共地址進入,這也可能是您的彈性IP
  5. 確保協議設置爲SFTP
  6. 在EC2用戶的用戶名放在
  7. 刪除一切從密碼字段 - 讓它空白
  8. 全部完成!現在連接。

就是這樣,你現在可以穿越你的EC2系統。有一個問題。因爲您以ec2-user身份登錄而不是root用戶,您將無法修改任何內容。爲了解決這個問題,請更改應用程序所在目錄的組所有權(/ var/www/html)或以前的內容。我會改變它,所以它是在一個EBS卷。 ;)還要確保此組具有讀取寫入和執行權限。 ec2用戶的組是ec2用戶。把其他人都當成沒有。所以您在使用該命令通過ssh登錄

sudo chgrp ec2-user file/folder
sudo chmod 770 file/folder

希望這可以幫助別人。

+0

那麼,你可以隨時從ec2-user的.ssh/authorized_keys中複製www-data的公鑰,或者在你的發行版中調用任何用戶......並直接連接作爲www用戶。 –

+0

經過一整天的搜索,這個答案終於做到了。非常感謝發佈這個! – user1011713

+0

這是此頁面上的最佳答案。最詳細的。數字高五! – courtsimas

4

FTP是一個非常麻煩的協議,因爲它需要一個輔助管道的實際數據傳輸,並不能很好地工作時管道。使用ssh,你應該使用與FTP無關的SFTP,但它是一個完全不同的協議。

閱讀也Wikipedia

+0

所以我一直在說這一切都是錯誤的。我正在嘗試使用FTP時,我應該做SFTP。感謝Antti Haapala! – Sententia

+3

沒問題,讓我們殺死FTP :) –

0

將密鑰添加到www是一種災難!你的應用程序的任何小問題將成爲安全噩夢。

作爲ftp的替代方案,考慮使用rsync或更基於capistrano的「成熟」部署策略。那裏有很多工具。

0

Antti Haapala的提示是解決EC2 SFTP的唯一方法。它工作得很好!請注意,您需要創建/var/www/.ssh/文件夾並將authorized_keys文件複製到那裏。

之後,您需要將authorized_keys所有權更改爲www-data,以便ssh連接可以識別它。亞馬遜應該讓人們知道。我在那裏找論壇,常見問題解答等。根本沒有線索......再次歡呼到stackoverflow,去哈哈!