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