linux怎么搭建ftp服务器
安装FTP
使用YUM安装
yum -y install vsftpd
文件配置
安装完之后在/etc/vsftpd/路径下会存在三个配置文件。
vsftpdconf: 主配置文件
ftpusers: 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户。
user_list: 指定的用户是否可以访问ftp服务器,通过vsftpdconf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP。
查看主配置文件的默认配置
cat /etc/vsftpd/vsftpdconf |grep -v '^#';
anonymous_enable=YES #允许匿名用户
local_enable=YES #允许使用本地用户账号登陆
write_enable=YES #允许ftp用户写数据
connect_from_port_20=YES #通过20端口传输数据
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
chroot_local_user=yes
其它的一些参数说明包括:
ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息
idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)
data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间
accept_timeout=60 设置在多长时间后自动建立连接
connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;
max_clients=200 指明服务器总的客户并发连接数为200
max_per_ip=3 指明每个客户机的最大连接数为3
local_max_rate=50000(50kbytes/sec) 本地用户最大传输速率限制
anon_max_rate=30000匿名用户的最大传输速率限制
pasv_min_port=端口
pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;
listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;
listen_port=端口号 设置FTP工作的端口号,默认的为21
local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;
chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user;
chroot_list_enable=yes/no 启用不锁定用户在主目录的名单
chroot_list_file=/etc/vsftpd/chroot_list指定列表文件
userlist_enable=YES/NO 是否加载用户列表文件;
userlist_deny=YES 表示上面所加载的用户允许登录;
userlist_file=/etc/vsftpd/user_list 指定列表文件
创建FTP连接用户
创建用户ftpuser
useradd ftpusr
设置用户只能ftp不能登入
usermod -s /sbin/nologin ftpuser
设置用户密码
passwd ftpusr
用户的默认的家目录在/home下,当前用户就只能访问家目录。
修改用户的家目录位/mnt
usermod -d /mnt ftpuser
启动FTP服务
service vsftpd start
测试
在/mnt目录下创建一个测试文件
touch /mnt/test
连接ftp
解决普通的FTP无法登入问题
linux默认是带安全机制,使用普通的ftp 21端口无法连接到ftp服务器,使用sftp就可以。这个时候需要关闭selinux,修改配置文件需要重启服务器。
vim /etc/sysconfig/selinux
改成selinux=disabled
不重启服务器的方法:
setenforce 0
setenforce 1 :设置SELinux 成为enforcing模式
setenforce 0 :设置SELinux 成为permissive模式
查看SELinux状态
/usr/sbin/sestatus -v
1 介绍
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
2 sftp搭建
21查看openssl的版本
ssh -V
###使用ssh –V命令来查看openssh的版本,版本必须大于48p1,低于这个版本需要升级。
22创建sftp组
groupadd sftp
23创建一个sftp用户,用户名为mysftp,密码为mysftp
useradd –g sftp –s /bin/false mysftp //该用户不能通过sshd登陆到系统
passwd mysftp
23sftp组的用户的home目录统一指定到 chaodiquancom /data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp
mkdir -p /data/sftp/mysftp
usermod –d /data/sftp/mysftp mysftp
24配置sshd_config
文本编辑器打开 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
找到如下这行,用#符号注释掉。
# Subsystem sftp /usr/libexec/openssh/sftp-server
在文件最后面添加如下几行内容,然后保存。
Subsystem sftp internal-sftp
###配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系###统的名字和对应的命令行(含选项和参数)。比如"sftp /usr/libexec/openssh/sftp-server"。,###这里配置为内部的
Match Group sftp
#限定只有sftp组的才能访问
ChrootDirectory /data/sftp/%u
###设定属于用户组sftp的用户访问的根文件夹
ForceCommand internal-sftp
###强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录###shell执行(shell -c)。这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。###这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。
AllowTcpForwarding no
###是否允许TCP转发,默认值为"yes", 禁止TCP转发并不能增强安全性,除非禁止了用户###对shell的访问,因为用户可以安装他们自己的转发器。
X11Forwarding no
###是否允许进行 X11
转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。
如果启用了 UseLogin ,那么X11转发将被自动禁止。
25设定Chroot目录权限
chown root:sftp /data/sftp/mysftp
chmod 755 /data/sftp/mysftp
26建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:
mkdir /data/sftp/mysftp/upload
chown mysftp:sftp /data/sftp/mysftp/upload
chmod 755 /data/sftp/mysftp/upload
27重启sshd服务
service sshd restart
如果你访问过较新版本的Mac OS X中的“共享首选项”面板,则可能已经注意到不再允许FTP服务器共享文件和文件夹的直接选项。至少没有一个明显的选择,但FTP和SFTP服务器功能仍然存在,这两个刚分裂成不同的功能,新版本的OS X喜欢SFTP而不是FTP。无论你想要使用什么,为其中任何一个设置服务器都非常简单,下面将介绍如何在OS X中启动FTP或SFTP服务器。
这将启动Mac上的通用FTP和FTPS服务器,但不是SFTP服务器:
如果你看到熟悉的FTP登录:
那么说明服务器正在运行。如果你没有看到,那么服务器还没有完成启动,或者你没有正确输入命令。然后,你可以通过相同的ftp命令,或使用Finder中的“连接到服务器”选项进行FTP。
正如你可能知道的那样,FTP是未加密的,因此出于安全考虑而失宠。现在在Mac上启用SFTP实际上比FTP更容易:
你可以通过在命令行输入以下内容来验证SFTP是否正常工作:
注意: FTP和SFTP服务器是不同的,启用一个不启用另一个。建议使用SFTP,因为默认加密层和安全传输。
以下是如何禁用FTP服务器的方法:
如命令所示,这将卸载ftp守护进程并关闭服务器。你只能关闭和禁用FTP服务器。而禁用SFTP只是取消选中位于OS X的“共享首选项”面板中的“远程登录”框。
这里以windows系统和linux系统为例,简单介绍一下如何在这2种系统下搭建ftp服务器,整个过程非常简单,感兴趣的朋友可以自己尝试一下:
windows
windows系统自带有ftp服务器,只需要在控制面板的“程序和功能”模块中开启一下就行,下面我简单介绍一下操作过程:
1首先,打开控制面板,依次点击“程序”->“启用或关闭windows功能”,在弹出的windows功能窗口中勾选“ftp服务器”和“iis管理控制台”,如下,等待程序安装完成:
2接着在搜索栏打开“iis控制器”,右键左侧的“网站”条目,在弹出的功能列表中选择“添加ftp站点”,这时我们就可以直接设置ftp服务器根目录了(也就是需要共享的文件夹),如下:
3然后就是设置ftp服务器ip地址和端口号,这里可以设置为内网ip,也可以设置为外网ip,根据自己需求设置就行,如下:
4接着就是设置访问用户及读写权限,这里可以是匿名用户、指定用户、所有用户、用户组等,如下:
5最后设置完成后,在浏览器输入“ftp://ftp服务器ip地址”就可以直接访问ftp服务器了,如下,所有文件都已列出,可以直接进行下载:
linux
这里需要先安装vsftp这个工具包,然后启动ftp服务,之后就可以直接访问ftp服务器上的文件了,下面我简单介绍一下操作过程:
1首先,安装vsftpd工具包,这个直接在终端输入命令“yuminstall-yvsftpd”就行,或者(“aptinstall-yvsftpd”),如下:
2安装完成后,这里你可以对/etc/vsftpd/vsftpdconf文件进行进行简单配置,设置用户访问策略等,官方文档有详细说明,修改对应参数就行,如下:
3接着就是启动ftp服务,直接运行“systemctlstartvsftpd”命令(或者“servicevsftpdstart”命令)就行,如下,ftp服务已经正常运行:
4最后就可以直接使用sftp或者ftp命令连接ftp服务器了,效果如下,输入用户password,成功验证后就可以直接上传下载文件了:
至此,我们就完成了在windows系统和linux系统下搭建ftp服务器。总的来说,整个过程非常简单,只要你熟悉一下上面的操作过程,很快就能掌握的,当然,你也可以借助现有的ftp软件来搭建ftp服务器,都行,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
可以按照如下方式进行设置:
1、创建sftp组,groupadd sftp,创建完成之后使用cat /etc/group命令组的信息。
2、创建一个sftp用户mysftp并加入到创建的sftp组中,同时修改mysftp用户的密码,useradd -g sftp -s /bin/false mysftp,passwd mysftp 。
3、新建/data/sftp/mysftp目录,并将它指定为mysftp组用户的home目录,mkdir -p /data/sftp/mysftp,usermod -d /data/sftp/mysftp mysftp。
4、编辑配置文件/etc/ssh/sshd_config,vi /etc/ssh/sshd_config,将如下这行用#符号注释掉。
5、设置Chroot目录权限,chown root:sftp /data/sftp/mysftp,chmod 755 /data/sftp/mys。
6、新建一个目录供stp用户mysftp上传文件,这个目录所有者为mysftp所有组为sftp,所有者有写入权限所有组无写入权限,mkdir /data/sftp/mysftp/upload,chown mysftp:sftp /data/sftp/mysftp/upload,chmod 755 /data/sftp/mysftp/upload。
7、关闭selinux并重启sshd服务,然后测试。
8、在其他服务器上进行验证,sftp 用户名@ip地址。
1、sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。
2、其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。
0条评论