在Amazon Cloud Server上设置FTP
我试图在亚马逊云服务器上设置FTP,但没有运气…我在网上search,没有具体的步骤如何做到这一点…
由于网上没有任何步骤,有人可以帮我find它或写在这里?
我通常使用专用的服务器或共享主机,但是我对这些云服务器不太好…
我发现这些命令运行:
$ 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
但我不知道在哪里写…
帮帮我?
Jaminto在回答这个问题方面做得非常出色,但是我最近自己经历了这个过程,想要扩展Jaminto的答案。
我假设您已经创build了一个EC2实例,并且已经为其添加了一个弹性IP地址。
步骤#1:安装vsftpd
SSH到您的EC2服务器。 types:
> sudo yum install vsftpd
这应该安装vsftpd。
步骤2:打开EC2实例的FTP端口
接下来,您需要打开EC2服务器上的FTP端口。 login到AWS EC2pipe理控制台,然后从左侧的导航树中select安全组。 select分配给您的EC2实例的安全组。 然后select入站选项卡,然后单击编辑:
添加端口范围20-21和1024-1048的两个自定义TCP规则。 对于Source,您可以select“Anywhere”。 如果您决定将Source设置为您自己的IP地址,请注意,如果通过DHCP分配IP地址,则可能会更改您的IP地址。
步骤#3:更新vsftpd.conf文件
input以下命令编辑您的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文件应该如下所示 – 除了确保将您的公共IP地址replace为pasv_address:
要保存更改,请按下escape,然后键入:wq
,然后按Enter键。
第四步:重启vsftpd
键入以下命令重新启动vsftpd:
> sudo /etc/init.d/vsftpd restart
您应该看到如下所示的消息:
如果这不起作用,请尝试:
> sudo /sbin/service vsftpd restart
步骤#5:创build一个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访问不在此列表中的任何用户。
所以,为了创build一个新的FTP帐户,您可能需要在您的服务器上创build一个新用户。 (或者,如果您已经拥有了/ etc / vsftpd / user_list中未列出的用户帐户,则可以跳到下一步。)
在EC2实例上创build一个新用户非常简单。 例如,要创build用户“bret”,请键入:
> sudo adduser bret > sudo passwd bret
以下是它的样子:
步骤#6:限制用户到他们的主目录
在这一点上,你的FTP用户不限于他们的主目录。 这不是很安全,但我们可以很容易地修复它。
通过input以下内容再次编辑您的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,另一种pipe理服务的方式是使用这个漂亮的graphics用户界面来控制哪些服务应该自动启动:
> sudo ntsysv
现在vsftpd会在您的服务器启动时自动启动。
附录B:更改用户的FTP主目录
*注意:Iman Sedighi已经发布了一个更优雅的解决scheme来限制用户访问特定的目录。 请参考他的优秀解决scheme张贴为答案*
您可能需要创build一个用户,并将他们的FTP访问权限限制在特定的文件夹中,例如/ var / www。 为了做到这一点,你需要改变用户的默认主目录:
> sudo usermod -d /var/www/ username
在这个特定的例子中,通常将用户的权限授予“www”组,该组通常与/ var / www文件夹相关联:
> sudo usermod -a -G www username
要在EC2服务器上启用被动ftp,您需要configuration您的ftp服务器应该用于入站连接的端口,然后打开ftp客户端数据连接的可用端口列表。
我不熟悉linux,但是您发布的命令是安装ftp服务器,configurationec2防火墙规则(通过AWS API)的步骤,然后configurationftp服务器以使用您在ec2防火墙上允许的端口。
所以这一步安装了ftp客户端(VSFTP)
> yum install vsftpd
这些步骤configuration了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
但是另外两个步骤可以通过EC2安全组下的亚马逊控制台轻松完成。 在那里,您需要configuration分配给您的服务器的安全组,以允许连接端口20,21和1024-1048
大文章…在亚马逊Linux AMI上轻而易举。
两个更有用的命令:
要更改默认的FTP上传文件夹
步骤1:
edit /etc/vsftpd/vsftpd.conf
第2步:在页面底部创build一个新条目:
local_root=/var/www/html
要对文件夹下的文件应用读取,写入和删除权限,以便您可以使用FTP设备进行pipe理
find /var/www/html -type d -exec chmod 777 {} \;
感谢@ clone45为好的解决scheme。 但是他的解决scheme的附录b只有一个重要的问题。 在我将主目录改为var / www / html之后,我立即无法通过ssh和sftp连接到服务器,因为它总是显示以下错误
permission denied (public key)
或在FileZilla中收到此错误:
No supported authentication methods available (server: public key)
但是我可以通过普通的FTP连接访问服务器。
如果遇到同样的错误,只需通过设置用户的默认主目录即可撤销@ clone45解决scheme的附录b:
sudo usermod -d /home/username/ username
但是,当您设置用户的默认主目录,则用户可以访问/ var / www / http之外的许多其他文件夹。 所以为了保护你的服务器,请遵循以下步骤:
1-使sftponly组为所有用户你想限制他们的访问权限只有ftp和sftp访问var / www / html。 使团体:
sudo groupadd sftponly
2,监视chroot为了限制这个组通过sftp访问服务器,你必须监视chroot,不要让组的用户访问其主目录内的html文件夹以外的任何文件夹。 做到这一点在sudo中打开/etc/ssh/sshd.config在vim中。 在文件末尾请注释以下行:
Subsystem sftp /usr/libexec/openssh/sftp-server
然后在下面添加这一行:
Subsystem sftp internal-sftp
所以我们用internal-sftpreplace了子系统。 然后在下面添加以下几行:
Match Group sftponly ChrootDirectory /var/www ForceCommand internal-sftp AllowTcpForwarding no
添加此行后,我保存了我的更改,然后通过以下方式重新启动ssh服务:
sudo service sshd restart
3-将用户添加到sftponly组您想要限制其访问权限的任何用户必须是sftponly组的成员。 因此,我们通过以下方式join:sudo usermod -G sftponly username
4限制用户对var / www / html的访问为了限制用户对var / www / html文件夹的访问,我们需要在用户的主目录(名字为“html”)中创build一个目录,然后mount / var / www到/ home / username / html如下:
sudo mkdir /home/username/html sudo mount --bind /var/www /home/username/html
5-设置写访问权限如果用户需要写访问权限/ var / www / html,那么你必须监视/ var / www中的用户,该用户必须有root权限和755的权限。然后你需要给/ var / www / html所有权的根:sftponly和权限775join以下几行:
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-模块shell访问如果你想限制访问不访问shell,使其更安全,那么只需将默认shell更改为bin / false,如下所示:
sudo usermod -s /bin/false username
如果您启用了ufw,请记住添加ftp:
> sudo ufw allow ftp
我花了2天才意识到我启用了ufw。
直到您通过以下命令将您的用户添加到组www:它将不会好。
sudo usermod -a -G www <USER>
这解决了权限问题。
通过添加这个设置默认path:
local_root=/var/www/html
不要忘记更新你的iptables防火墙,如果你有一个允许20-21和1024-1048范围内。
从/ etc / sysconfig / iptables执行此操作
像这样添加行:
-Ainput-m状态 – 状态新-m tcp -p tcp –dport 20:21 -j ACCEPT
-A INPUT -m状态 – 状态新-m tcp -p tcp –dport 1024:1048 -j ACCEPT
并使用以下命令重新启动iptables:
sudo服务iptables重新启动
我简化了克隆步骤:
打开他提到的端口
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
这是一个伟大的写作。 请注意,您可能需要将您创build的用户添加到“FTP”用户组:
> gpasswd -a <usr> ftp
我一直跟着clone45的回答结束。 一个伟大的文章! 由于我需要FTP访问来将插件安装到我的一个WordPress站点,我将主目录更改为/ var / www / mysitename。 然后我继续添加我的FTP用户到Apache(或WWW)组,如下所示:
sudo usermod -a -G apache myftpuser
在此之后,我仍然在WP的插件安装页面上看到这个错误:“找不到WordPress内容目录(wp-content)”。 在wp.org Q&A会议上search并find了这个解决scheme: 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插件安装成功。
也许值得一提的是除了clone45的回答:
修复了vsftpd中Chrooted 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中Chrooted FTP用户的写入权限
更新后VSFTPd停止工作
FileZila是使用Amazon Cloud进行安装的好工具。
- 从https://filezilla-project.org/下载FileZila客户端;
- 点击文件 – >站点pipe理器 – >
- 新网站
- 提供您的亚马逊云位置的主机名IP地址(如果有的话)
- 协议 – SFTP(可根据您的要求更改)
- logintypes – 正常(所以系统不会每次都要求input密码)
- 提供用户名和密码。
- 连接。
您只需要执行一次这些步骤,稍后它会将内容上传到相同的IP地址和同一站点。