需求:公司需要做一個自動化導出賬單,賬單原始數據由第三方提供,為拿到原始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 sftpeb
passwd
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、檢查系統selinux是否關閉,如未關閉一定要關閉!(這點很重要,如果不關閉會導致無法上傳,出現權限不足問題“Permission denied“)
vim /etc/selinux/config #將SELINUX=enforcing改為SELINUX=disabled
#getenforce檢查,為“Disabled”即表示已關閉selinux
9、重啟ssh服務,測試是否可用,測試命令如下
#登錄 sftp sftpeb@192.168.2.33 #上傳 put /tmp/test.txt #下載 cd upload get test.txt
以上sftp搭建及測試完成,下一篇記錄使用sftp如何自動導入sql並自動生成賬單