銀企直連的電子回單接口中,部分銀行使用sftp服務作為文件服務器,通常只保留N天的文件內容,企業未在規定的時間范圍下載文件之后就不能下載了,那么有一個自動下載的腳本豈不美滋滋。
Linux安裝SFTP服務
1、檢查服務器是否安裝SFTP服務
[root@localhost ~]# vsftpd -v //方法一
[root@localhost ~]# rpm -q vsftpd //方法二
[root@localhost ~]# where is vsftpd
2、安裝SFTP服務
[root@localhost ~]# yum -y install vsftpd
3、關閉firewall和SELinux
[root@localhost ~]# setenforce 0 # FTP用戶登錄創建文件夾失敗 不重啟系統
[root@localhost ~]# vi /etc/selinux/config # 修改為SELINUX=disabled FTP用戶登錄創建文件夾失敗 重啟系統
[root@localhost ~]# systemctl stop firewalld.service # 停止 firewall
[root@localhost ~]# systemctl disable firewalld.service # 禁止 firewall 開機啟動
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp # 不關閉防火牆,需要防火牆添加FTP服務
[root@localhost ~]# firewall-cmd --reload
4、關閉匿名訪問
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf #修改配置文檔,關閉匿名訪問:anonymous_enable=NO
/etc/vsftpd/ftpusers:禁止使用vsftpd的用戶列表文件
/etc/vsftpd/user_list:禁止或允許使用vsftpd的用戶列表文件。這個文件中指定的用戶缺省情況(即在/etc/vsftpd/vsftpd.conf中設置userlist_deny=YES)下也不能訪問FTP服務器,在設置了userlist_deny=NO時,僅允許user_list中指定的用戶訪問FTP服務器
sftp 免密登陸設置
1、生成公鑰文件
[ftpuser@localhost ~]$ ssh-keygen -b 1024 -t rsa ===>ftp登陸用戶環境,生成安全證書(執行命令直接回車,選擇默認空密碼證書即可)
2、將公鑰文件上傳至SFTP服務器並保存在用戶的authorized_keys文件中
[ftpuser@localhost ~]$ scp /home/ftpuser/.ssh/id_rsa.pub SFTP服務器IP:路徑/id_rsa.pub # 將客戶端的公鑰上傳至SFTP服務器
[ftpuser@localhost ~]$ cat id_rsa.pub >> /home/ftpuser/.ssh/authorized_keys # 將客戶端公鑰保存在服務器SFTP用戶的authorized_keys文件中
3、驗證
[docker@localhost ~]$ sftp -oIdentityFile=/home/docker/ftp_rsa -oPort=22 ftpuser@192.168.137.130 # 連接時攜帶私鑰即可
SFTP自動下載文件腳本
#!/bin/bash
data=$(date +%Y%m%d -d '-1 day')
cd /home/ICBC_HD
sftp -oIdentityFile=/home/docker/ftp_rsa -oPort=22 ftpuser@192.168.137.130 <<EOF // <<EOF 不可換行
cd data
mget *$data*
exit
EOF
- -oIdentityFile:私鑰文件
- -oPort:端口
- sftp -oIdentityFile= -oPort= 用戶@ip