Amazon Cloud ServerでのFTPのセットアップ[終了]


257

AmazonクラウドサーバーでFTPをセットアップしようとしていますが、うまくいきません。私はネットで検索しますが、具体的な手順はありません。

実行するコマンドを見つけました:

$ yum install vsftpd
$ ec2-authorize default -p 20-21
$ ec2-authorize default -p 1024-1048
$ vi /etc/vsftpd/vsftpd.conf
#<em>---Add following lines at the end of file---</em>
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048
    pasv_address=<Public IP of your instance>
$ /etc/init.d/vsftpd restart

しかし、どこに書けばいいのかわかりません。


10
この質問はserverfault.comに移行する必要があります。
ジェローム・Verstrynge

回答:


570

Jamintoは質問への回答に優れた仕事をしましたが、私は最近自分自身でプロセスを実行し、Jamintoの回答をさらに詳しく説明したいと思いました。

EC2インスタンスがすでに作成されていて、Elastic IPアドレスが関連付けられていると想定しています。


ステップ#1:vsftpdをインストールする

EC2サーバーにSSHで接続します。タイプ:

> sudo yum install vsftpd

これでvsftpdがインストールされます。

ステップ#2:EC2インスタンスのFTPポートを開く

次に、EC2サーバーのFTPポートを開く必要があります。AWS EC2マネジメントコンソールにログインし、左側のナビゲーションツリーから[セキュリティグループ]を選択します。EC2インスタンスに割り当てられているセキュリティグループを選択します。次に[受信]タブを選択し、[編集]をクリックします。

ここに画像の説明を入力してください

ポート範囲が20-21と1024-1048の2つのカスタムTCPルールを追加します。ソースには、「どこでも」を選択できます。Sourceを独自のIPアドレスに設定する場合は、DHCPを介して割り当てられている場合、IPアドレスが変更される可能性があることに注意してください。

ここに画像の説明を入力してください



ステップ#3:vsftpd.confファイルを更新する

次のように入力して、vsftpd confファイルを編集します。

> sudo vi /etc/vsftpd/vsftpd.conf

次の行を変更して、匿名FTPを無効にします。

anonymous_enable=YES

anonymous_enable=NO

次に、vsftpd.confファイルの最後に次の行を追加します。

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance> 

vsftpd.confファイルは次のようになります。ただし、pasv_addressをパブリックIPアドレスに置き換えてください。

ここに画像の説明を入力してください

変更を保存するには、Escキーを押してからと入力し:wq、Enter キーを押します。



ステップ#4:vsftpdを再起動する

次のように入力して、vsftpdを再起動します。

> sudo /etc/init.d/vsftpd restart

次のようなメッセージが表示されます。

ここに画像の説明を入力してください


これが機能しない場合は、以下を試してください。

> sudo /sbin/service vsftpd restart



ステップ#5:FTPユーザーを作成する

/ etc / vsftpd / user_listを確認すると、次のように表示されます。

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

これは基本的に「これらのユーザーにFTPアクセスを許可しない」と言っています。vsftpdは、このリストにないユーザーにFTPアクセスを許可します。

そのため、新しいFTPアカウントを作成するには、サーバー上に新しいユーザーを作成する必要がある場合があります。(または、/ etc / vsftpd / user_listにリストされていないユーザーアカウントがすでにある場合は、次の手順にスキップできます。)

EC2インスタンスで新しいユーザーを作成するのは非常に簡単です。たとえば、ユーザー「bret」を作成するには、次のように入力します。

> sudo adduser bret
> sudo passwd bret

これは次のようになります。

ここに画像の説明を入力してください



手順6:ユーザーをホームディレクトリに制限する

この時点で、FTPユーザーはホームディレクトリに制限されていません。これは安全ではありませんが、簡単に修正できます。

次のように入力して、vsftpd confファイルをもう一度編集します。

> sudo vi /etc/vsftpd/vsftpd.conf

次の行のコメントを外します。

chroot_local_user=YES

完了すると、次のようになります。

ここに画像の説明を入力してください

次のように、vsftpdサーバーを再起動します。

> sudo /etc/init.d/vsftpd restart

すべて完了!


付録A:再起動後も存続

サーバーの起動時にvsftpdが自動的に起動しません。私のような場合、つまり、EC2インスタンスを再起動した後、FTPが壊れているように見えるときに恐怖の瞬間を感じることになりますが、実際には実行されていないだけです。これを修正する便利な方法を次に示します。

> sudo chkconfig --level 345 vsftpd on

または、redhatを使用している場合、サービスを管理する別の方法は、この気の利いたグラフィックユーザーインターフェイスを使用して、自動的に開始するサービスを制御することです。

>  sudo ntsysv

ここに画像の説明を入力してください

サーバーが起動すると、vsftpdが自動的に起動します。


付録B:ユーザーのFTPホームディレクトリの変更

*注:Iman Sedighiは、特定のディレクトリへのユーザーアクセスを制限するためのよりエレガントなソリューションを投稿しました。回答として投稿された彼の優れたソリューションを参照してください*

ユーザーを作成し、そのFTPアクセスを/ var / wwwなどの特定のフォルダーに制限することができます。これを行うには、ユーザーのデフォルトのホームディレクトリを変更する必要があります。

> sudo usermod -d /var/www/ username

この特定の例では、「www」グループにユーザー権限を与えるのが一般的です。これは、/ var / wwwフォルダーに関連付けられていることがよくあります。

> sudo usermod -a -G www username

3
ではstep 3どのように私はそれを保存することができ、ファイルの行を追加した後?
Sumit Bijvani 2013

2
了解しました。どうすればFTPに接続できますか?
Sumit Bijvani 2013

7
こんにちはSumit。Viはかなりトリッキーなエディターです。作業を保存するには、escapeを入力し、次に ":wq"(引用符なし)を入力して、Enterキーを押します。FTPについては、FTPクライアントに基づいているため、答えるのは困難です。時間がある場合は、人気のあるFTPクライアントをセットアップするために、私の回答にいくつかの指示を追加してみます。個人的にはAptana Studioを使っています。Aptanaでは、SFTPサイトを作成し、EC2インスタンスの作成時に取得した公開鍵認証ファイルをAptanaに提供します。filezillaを使用している場合は、pageant.exeを使用してみてください。乾杯!
clone45 2013年

6
これは素晴らしいです。非常に明確な。どうもありがとうございました。
AC Patrice

11
実際、おそらく彼は私を信用できるかもしれません。彼は1月13日に私の回答を却下しました
clone45

27

EC2サーバーでパッシブFTPを有効にするには、FTPサーバーがインバウンド接続に使用するポートを構成してから、FTPクライアントデータ接続に使用できるポートのリストを開く必要があります。

私はLinuxにあまり慣れていませんが、投稿したコマンドは、ftpサーバーをインストールし、ec2ファイアウォールルールを(AWS APIを介して)構成し、ec2ファイアウォールで許可したポートを使用するようにftpサーバーを構成するための手順です。

したがって、このステップではFTPクライアント(VSFTP)をインストールします

> yum install vsftpd

これらの手順はFTPクライアントを構成します

> vi /etc/vsftpd/vsftpd.conf
--    Add following lines at the end of file --
     pasv_enable=YES
     pasv_min_port=1024
     pasv_max_port=1048
     pasv_address=<Public IP of your instance> 
> /etc/init.d/vsftpd restart

ただし、残りの2つのステップは、Amazonコンソールを介してEC2セキュリティグループの下で簡単に実行できます。サーバーに割り当てられているセキュリティグループを構成して、ポート20、21、および1024-1048での接続を許可する必要があります。


これらの行の意味はわかっていますが、どこに入力すればよいのかわかりません...それが問題です...
SharkTheDark

1
FTPサーバーをインストールするサーバーのコマンドラインで?
jaminto

2
SSH経由でサーバーに接続します:blog.taggesell.de/index.php?
archives

:あなたはまだエラー(:vsftpdの:500 OOPS chroot環境内の書き込み可能なルートで実行することを拒否())を取得する場合には、これは私にとって問題で固定benscobie.com/...
kaore

匿名FTPがデフォルトでオンになっていることにショックを受けました。
jeffkee

16

素晴らしいソリューションをありがとう@ clone45。しかし、私は彼の解決策の付録bで重要な問題を1つだけ抱えていました。ホームディレクトリをvar / www / htmlに変更した直後に、常に次のエラーが表示されるため、sshとsftpを介してサーバーに接続できませんでした。

permission denied (public key)

またはFileZillaでこのエラーを受け取りました:

No supported authentication methods available (server: public key)

しかし、通常のFTP接続を介してサーバーにアクセスできました。

同じエラーが発生した場合は、@ clone45ソリューションの付録bを元に戻し、ユーザーのデフォルトのホームディレクトリを設定します。

sudo usermod -d /home/username/ username

ただし、ユーザーのデフォルトのホームディレクトリを設定すると、ユーザーは/ var / www / httpの外部にある他の多くのフォルダーにアクセスできます。サーバーを保護するには、次の手順に従います。

1-sftponlyグループ を作成します。var / www / htmlへのftpおよびsftpアクセスのみにアクセスを制限するすべてのユーザーのグループを作成します。グループを作るには:

sudo groupadd sftponly

2- chrootの 脱獄sftpを介したサーバーへのこのグループのアクセスを制限するには、chrootを脱獄して、グループのユーザーがホームディレクトリ内のhtmlフォルダー以外のフォルダーにアクセスできないようにする必要があります。これを行うには、sudoを使用してvimで/etc/ssh/sshd.configを開きます。ファイルの最後に次の行をコメントしてください:

Subsystem sftp /usr/libexec/openssh/sftp-server

そして、その下に次の行を追加します。

Subsystem sftp internal-sftp

そこで、サブシステムをinternal-sftpに置き換えました。次に、その下に次の行を追加します。

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

この行を追加した後、変更を保存し、次の方法でsshサービスを再起動します。

sudo service sshd restart

3-ユーザーをsftponlyグループに追加する アクセスを制限するユーザーは、sftponlyグループのメンバーでなければなりません。したがって、次のようにしてsftponlyに参加させます。sudo usermod -G sftponly username

4-ユーザーアクセスをvar / www / htmlのみ に制限するユーザーアクセスをvar / www / htmlフォルダーのみに制限するには、そのユーザーのホームディレクトリ(「html」の名前)にディレクトリを作成し、/ varをマウントする必要があります。 / wwwを/ home / username / htmlに次のように追加します。

sudo mkdir /home/username/html
sudo mount --bind /var/www /home/username/html

5-書き込みアクセスの設定 ユーザーが/ var / www / htmlへの書き込みアクセスを必要とする場合、root:rootの所有権と755の権限を持つ必要がある/ var / wwwでユーザーを投獄する必要があります。次に/ var /を与える必要があります。 www / html root:sftponlyの所有権と775の権限。次の行を追加します。

sudo chmod 755 /var/www
sudo chown root:root /var/www
sudo chmod 775 /var/www/html
sudo chown root:www /var/www/html

6-シェルアクセスをブロック するアクセスをシェルにアクセスしないように制限してより安全にする場合は、次のようにデフォルトのシェルをbin / falseに変更します。

sudo usermod -s /bin/false username

あなたにsudo mount --bind /var/www /home/username/html私はwwwフォルダがないと言われます。これはルート(/ homeフォルダーがある場所)から行われると思いますか?
elliotrock 2017年

1
sudo chown root:www /var/www/htmlchown:無効なグループ: 'root:www'
elliotrock

2
パート6はsudo usermod -s /sbin/nologin username、vsftpdのpamモジュールのデフォルトのシェル制限のため、より適切なはずです(私の場合は、よりうまく機能するようです)。また、パート4はmountリブートのたびに実行する必要があるため、rc.localに配置することをお勧めします。
phy25 '19

11

素晴らしい記事... Amazon Linux AMIで簡単に動作しました。

さらに2つの便利なコマンド:

デフォルトのFTPアップロードフォルダを変更するには

ステップ1:

edit /etc/vsftpd/vsftpd.conf

手順2:ページの下部に新しいエントリを作成します。

local_root=/var/www/html

フォルダ内のファイルに読み取り、書き込み、削除のアクセス許可を適用して、FTPデバイスを使用して管理できるようにする

find /var/www/html -type d -exec chmod 777 {} \;

11
これはすべてのファイルとフォルダーを777にchmodしますが、これはWebサイトにとって安全ではありません
sergiogx

OK。では、これについてどのような変更を提案しますか?
Ravi Shanker、2014

3
必要なアクセス許可を割り当てる必要があります。すべてのアクセス許可をすべて一括して開くのではなく、問題が発生するようにしてください。たとえば、chmod -R ug + rw / var / www / htmlを使用すると、ユーザーとグループにすべてのファイルへの読み取りおよび書き込み権限が付与されますが、不要な実行権限と他の権限は付与されません。次に、ユーザーとグループを適切にセットアップして、他のグループを変更する必要がないようにします。これは、ftpユーザーがすべてのファイルの読み取りと書き込みを実行でき、Webサーバーが読み取りを設定できる場合です。両方のユーザーを同じグループに入れ、ユーザーにrwを、グループにrを追加します。
AaronM 2014年

/ var / www / htmlに775を適用する必要があります。残りのサブフォルダとファイルは、必要に応じて権限を取得できます。777は非常に危険です。
Iman Sedighi 16

6

ufwを有効にしている場合は、ftpを追加してください:

> sudo ufw allow ftp

私がufwを有効にしたことに気づくのに2日かかりました。


またはiptables、または...ええ、私もいつも忘れます!
jsh 2015

6

次のコマンドでユーザーをグループwwwに追加するまで、問題はありません。

sudo usermod -a -G www <USER>

これは許可の問題を解決します。

これを追加してデフォルトのパスを設定します。

local_root=/var/www/html

4

20-21と1024-1048の範囲を許可するファイアウォールがある場合は、iptablesファイアウォールを更新することを忘れないでください。

/ etc / sysconfig / iptablesからこれを行う

次のような行を追加します。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024:1048 -j ACCEPT

そして、次のコマンドでiptablesを再起動します:

sudoサービスiptables再起動


4

clone45のステップを簡略化しました:

彼が述べたようにポートを開きます

sudo su
sudo yum install vsftpd
echo -n "Public IP of your instance: " && read publicip
echo -e "anonymous_enable=NO\npasv_enable=YES\npasv_min_port=1024\npasv_max_port=1048\npasv_address=$publicip\nchroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
sudo /etc/init.d/vsftpd restart

2

私は最後までclone45の答えをたどりました。素晴らしい記事!ワードプレスサイトの1つにプラグインをインストールするにはFTPアクセスが必要だったので、ホームディレクトリを/ var / www / mysitenameに変更しました。次に、次のようにftpユーザーを引き続きapache(またはwww)グループに追加しました。

sudo usermod -a -G apache myftpuser

この後も、WPのプラグインインストールページで「WordPressコンテンツディレクトリ(wp-content)が見つかりません」というエラーが表示されました。wp.​​orgのQ&Aセッションでこのソリューションを検索して見つけました:https : //wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-contentをwp-の最後に追加しましたconfig.php:

if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}

この後、私のWPプラグインは正常にインストールされました。


0

clone45の答えに加えて言及する価値があるかもしれません:

vsftpdでChrootされたFTPユーザーの書き込み権限を修正する

Ubuntu 12.04 Preciseに付属するvsftpdバージョンでは、chrootされたローカルユーザーがデフォルトで書き込むことは許可されていません。デフォルトでは/etc/vsftpd.confにこれがあります

chroot_local_user=YES
write_enable=YES

ローカルユーザーが書き込みできるようにするには、次のパラメーターを追加する必要があります。

allow_writeable_chroot=YES

注: 書き込み権限の問題は、次のFileZillaエラーとして表示される場合があります。

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

参考資料:
vsftpdでのChrootされたFTPユーザーの書き込み権限の修正
VSFTPdが更新後に機能しなくなった


0

530のパスワードが正しくない場合

あと1ステップ必要

/ etc / shellsファイル内

次の行を追加します

/ bin / false


-2

FileZilaは、Amazon Cloudでセットアップするための優れたFTPツールです。

  1. https://filezilla-project.org/からFileZilaクライアントをダウンロードします。
  2. [ファイル]-> [サイトマネージャ]->をクリックします。
  3. 新しいサイト
  4. Amazonクラウドの場所のホスト名IPアドレスを提供します(ポートがある場合)
  5. プロトコル-SFTP(要件に応じて変更される場合があります)
  6. ログインタイプ-通常(システムは毎回パスワードを要求しません)
  7. ユーザー名とパスワードを入力します。
  8. 接続します。

これらの手順は1回だけ実行する必要があります。後で、同じIPアドレスと同じサイトにコンテンツをアップロードします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.