1. sftp簡介
sftp是SSH File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的網絡的加密方法。
sftp 與 ftp 有着幾乎一樣的語法和功能。
其實在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件信息傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接和答復操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。
SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多。
2. 首先查看openssh版本
[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
版本必須大於4.8p1,低於的這個版本需要升級。
3. 創建sftp用戶組
groupadd bmssftp
4. 創建sftp用戶並歸到sftp用戶組中
useradd -g bmssftp -s /bin/false bmssftp
passwd bmssftp
# 這里為bmssftp用戶設置密碼為:bmssftp123
5. 將sftp組的用戶home目錄統一指定到/data/sftp下,按用戶名區分,這里先新建一個bmssftp目錄,然后指定bmssftp的home為/data/sftp/bmssftp
mkdir -p /data/sftp/bmssftp #先新建一個bmssftp目錄,作為bmssftp用戶的home目錄
usermod -d /data/sftp/bmssftp bmssftp #修改bmssftp的home目錄為/data/sftp/bmssftp
6. 配置sshd_config
vim /etc/ssh/sshd_config
注釋掉**X11Forwarding yes **這句話,大概在101行
注釋掉**Subsystem sftp /usr/libexec/openssh/sftp-server **這句話,大概在132行
並在文件末尾添加如下語句:
Subsystem sftp internal-sftp
Match Group bmssftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
7. 設定權限
chown root:bmssftp /data/sftp/bmssftp
chmod 755 /data/sftp/bmssftp
8. 現在其實已經可以通過bmssftp賬號密碼登入了,但是在bmssftp文件夾中還不能上傳文件,所以需要新建一個文件夾來供bmssftp用戶上傳文件
mkdir -p /data/sftp/bmssftp/upload
chown bmssftp:bmssftp /data/sftp/bmssftp/upload
chmod 755 /data/sftp/bmssftp/upload
9. 關閉selinux
setenforce 0
vi /etc/selinux/config
將文件中的SELINUX=enforcing 修改為 SELINUX=disabled ,
然后保存
10. 重啟sshd服務
service sshd restart
11. 本機驗證sftp登錄是否正常
sftp 用戶名@本機IP,然后輸入對應密碼
[root@localhost sftp]# sftp bmssftp@127.0.0.1
Connecting to 127.0.0.1...
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is c7:d0:94:8a:55:70:a7:a0:58:26:9c:e7:9d:d5:59:33.
Are you sure you want to continue connecting (yes/no)? yes #首次登錄會提示是否繼續
Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
bmssftp@127.0.0.1's password: #輸入bmssftp用戶的密碼(第4步創建用戶時設置的密碼)
sftp> dir
upload
sftp>
如果出現sftp>,就沒問題,這時候你就可以用第三方工具登錄sftp進行上傳和下載了。
注意1:
ssh 服務要添加到防火牆規則的允許列表中。
注意2:
如果你的操作系統的ssh服務做了源IP登錄限制,請把你的源IP加入以下文件的允許IP列表中,否則用bmssftp用戶無法登錄。
/etc/hosts.deny
參考鏈接:
https://blog.csdn.net/yeyinglingfeng/article/details/81503578