Linux 建立 SFTP 服務完整教學

建立名為 sftp_users 的使用者群組,供 SFTP 使用
    
sudo groupadd sftp_users
    

檢查是否有成功建立使用者群組:
    
grep sftp_users /etc/group
    

建立名為 sftpuser1 的使用者,並加入至 sftp_users 使用者群組中:
    
sudo useradd -m sftpuser1 -g sftp_users
    

檢查使用者:
    
grep sftpuser1 /etc/passwd
    

幫剛剛建立的使用者 sftpuser1 增加密碼:
    
sudo passwd sftpuser1
    

然後輸入兩次密碼 在 /var 中建立 sftp 資料夾,並在 sftp 資料夾中再建立 files 資料夾
    
sudo mkdir -p /var/sftp/files
    

將 files 資料夾的使用者群組改為 sftp_users
    
sudo chown :sftp_users /var/sftp/files
    

給予權限,讓 sftp 使用者群組可以在 files 資料夾內讀寫:
    
sudo chmod 775 /var/sftp/files/
    

SFTP 需要 SSH ,所以先使用下面的指令安裝
    
sudo apt update && sudo apt install openssh-server 
    

調整 ssh 設定:
    
sudo vi /etc/ssh/sshd_config
    

在 sshd_config 檔案中最下面的部分,應該有下列區塊:
    
# override default of no subsystems
Subsystem       sftp    /usr/lib/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server
                                   
    

將上面內容使用下面的內容取代:
    
Subsystem       sftp    internal-sftp

Match Group sftp_users
        ForceCommand internal-sftp
        PasswordAuthentication yes
        ChrootDirectory /var/sftp
    

sftp 使用者一連入會在 /var/sftp 資料夾中,看到的路徑是 / ,但是無法存取,會看到裡面有 files 資料夾,在 files 裡面可以存取檔案

檢查文件是否正確
    
sudo sshd -t 
    

重新啟動 ssh 服務:
    
sudo systemctl restart ssh 
    

如果使用者想要使用 ssh 登入,就會出現下面的訊息,表示不能使用 ssh ,只能適用 sftp
    
This service allows sftp connections only.
Connection to 192.168.171.128 closed.
    

在 windows 連入(可以在 sftp 後面使用 -P 加上自訂的 port):
    
sftp sftpuser1@192.168.0.100
    

sftp 詳細指令操作可以參考這篇:windows 使用指令視窗 上傳/下載 ftp 伺服器上的檔案(不用額外安裝軟體)

留言