需求:公司需要做一个自动化导出账单,账单原始数据由第三方提供,为拿到原始sql数据,需要给第三方提供一台sftp服务器用来上传sql表。
整体流程:使用系统自带的sftp服务,首先创建给客户使用的sftp账号,让他只能在指定的目录下进行添加、修改、删除操作,并且只能使用sftp登录服务器,不能用ssh操作,保证可以上传,下载即可。搭建完毕测试上传及下载。提供sftp服务的有vsftpd和internal-sftp,这里用的是系统自带的internal-sftp,操作步骤如下---------
OS环境:CentOS release 6.5 (Final)
1、建立一个名为sftpusers
的sftp
用户组
#groupadd sftpusers
2、建立sftp账号(使用-s /bin/false来禁止sftpeb这个账户ssh登录权限),设置密码
useradd -s /bin/false -g sftpusers sftpebpasswd
3、配置ssh和权限
vi /etc/ssh/sshd_config
4、修改为下面内容,保存退出
UsePAM yes #UsePAM改成yes #注释掉这行 #Subsystem sftp /usr/libexec/openssh/sftp-server #添加在配置文件末尾 Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp Match Group sftpusers #匹配用户,如果要匹配多个组,多个组之间用逗号分割 ChrootDirectory %h #用chroot指定sftp账户登录的默认根目录 ForceCommand internal-sftp #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令 X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉 AllowTcpForwarding no
5、修改 /home/sftpeb/目录权限为root所有
chown root:root /home/sftpeb chmod 755 /home/sftpeb
6、此时sftp用户登录后并不能上传文件,那是因为登录后默认是用户目录,比如/home/sftpeb
,但是该目录是root
用户拥有,因此我们还要修改权限。在用户目录下建立子目录,让sftpusers组
中的用户可读写文件
cd /home/sftpeb/ mkdir upload
7、授权upload
文件夹读写 ,让子文件夹upload属于sftpeb
chown -R sftpeb /home/sftpeb/upload chmod 755 -R /home/sftpeb/upload
8、重启ssh服务,测试是否可用,测试命令如下
#登录 sftp [email protected]192.168.2.33 #上传 put /tmp/test.txt #下载 cd upload get test.txt
以上sftp搭建及测试完成,下一篇记录使用sftp如何自动导入sql并自动生成账单
原文地址:https://www.cnblogs.com/kk123/p/9054004.html
时间: 2024-10-10 15:48:53