基于Linux搭建SFTP&FTP服务器及相关常用工具、脚本
2023-10-18 14:32:24 0 举报
基于Linux搭建SFTP&FTP服务器及相关常用工具、脚本
作者其他创作
大纲/内容
1、创建用户。例如gongshang,并禁止ssh登录,不创建家目录useradd -s /sbin/nologin -M gongshang
2、设置sftp账号的密码passwd gongshang
3、创建sftp根目录,所有sftp用户都在这个目录下活动mkdir -p /sftp/sftpfile
4、设置目录权限此案,通常目录用root新建后默认就是设置好的
5、创建用户gongshang的根目录,目录名为用户名;mkdir gongshangPS:这里的目录名一定是跟用户名一致,不然会连接不上SFTP服务器。
6、新建sftp组并设置gongshang账号目录的权限groupadd sftpchown root:sftp /sftp/username
7、将SFTP用户加到SFTP组中;PS:这一步是为了限制SFTP账号的访问目录usermod -a -G sftp username
将访问端口从默认的22改成2222,此操作需要重启ssh服务。vim /etc/ssh/sshd_config
新增如下配置:Subsystem sftp internal-sftpMatch Group sftp ChrootDirectory /sftp/sftpdata/%u ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no红色框中的注释掉
8,修改SFTP配置文件
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
9、关闭防火墙
切换至需要配置免密登录的账号的家目录下然后运行生成密钥ssh-keygen -t rsa 一直回车
生成.ssh目录,进到目录中新建文件touch authorized_keys
修改文件权限chmod 600 authorized_keys
下载私钥id_rsasz id_rsa
将公钥写入到authorized_keys中cat id_rsa.pub > authorized_keys
启用允许公钥访问
重启ssh服务systemctl restart sshd
如果是sftp账号想要免密登录 就是将公钥放到对应sftp目录的根路径下 新建.ssh目录 然后新建authorized_keys并将公钥放进去即可chmod 700 .sshchmod 600 .ssh/authorized_keyschown $user:$user -R /home/$user
10、SFTP账号设置免密登录
11、想要实现限制SFTP账号只能密钥登录且只能访问指定目录的需求可以通过挂载目录实现mount --bind /data/sfsftpuser /sftp/sftpdata/sfsftpuser/data
搭建SFTP服务器
1、安装vsftpdyum install -y vsftpd
2、新增FTP用户及设置密码并禁止用户通过ssh登录useradd ftpuserpasswd ftpuserusermod -s /sbin/nologin ftpuser
vim /etc/vsftpd/vsftpd.conf
配置文件最后再加上:chroot_local_user=YESlocal_root=/dataallow_writeable_chroot=YESuserlist_deny=NOuserlist_file=/etc/vsftpd/user_listuser_config_dir=/etc/vsftpd/userconfigpasv_min_port=60000 //修改vsftpd传递数据的最小端口pasv_max_port=60100 //修改vsftpd传递数据的最大端口
3、修改配置文件/etc/vsftpd/vsftpd.conf
4、将这一行注释掉,否则可能会提示530登录失败vim /etc/pam.d/vsftpd
5、配置ftp账号的访问路径配置FTP账号指定的访问目录local_root=/app/ftpdas新建ftp账号的访问目录mkdir /app/ftpdas
6、在user_list文件中加上新增的ftp账号
7、启动ftp服务
vim /etc/services
8、修改FTP指定端口是需要修改配置文件:
9、PS:如果是需要对公网公开,一般需要加白名单,除了需要放开FTP指定的端口之外还需要将最小到最大的限制端口放开,例如这边示例中的TCP 60000-60100端口。
vim vsftpd.conf下面的配置加到文件最后面即可ssl_enable=YESallow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YESssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOrequire_ssl_reuse=NOssl_ciphers=HIGHrsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pemPS:证书生成命令:openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
配置证书后链接效果图
10、配置SSL证书
搭建FTP服务器
lftp -e \
mirror --Remove-source-files:表示从对端下载文件后将对端的文件删除掉,这里是下载一个文件删除一个问题
ps:这里需要注意密码的格式,尽量不要使用有特殊字符作为密码,不然会出现认证失败的问题,例如下图:这里将密码改成不包含特殊字符的即可正常连接
如果需要在上述基础上海需要多线程下载,可以加上以下参数--parallel=n;n是要下载的线程数,建议线程数小于等于10,例如:lftp -e \
将同步下载的进程放到后台运行并将运行的结果输入到ftpdownload1018.txt文件中nohup lftp -e \
将FTP服务器上的数据下载至本地并下载完删除文件:
通过FTP服务器自动备份数据---shell脚本
基于Linux搭建SFTP&FTP服务器及相关常用工具、脚本
0 条评论
回复 删除
下一页