1. 下載安裝 openssh-server
sudo apt-get install openssh-server
2. 創(chuàng)建 sftp 用戶組 sftp-group
sudo addgroup sftp-group
3. 創(chuàng)建 sftp 用戶 sftp-user
sudo adduser sftp-user
// 將 sftp-user 添加到 sftp-group 用戶組,并從其他用戶組移除
sudo usermod -G sftp-group -s /bin/false sftp-user
// 將 root 添加到 sftp 用戶組
usermod -a -G sftp-group root
4. 創(chuàng)建共享目錄配置權限
// 創(chuàng)建 sftp 共享目錄
sudo mkdir /data/shared
// 先將目錄分配給 root
chown root /data/shared
chmod 755 /data/shared
// 再將目錄轉讓給 sftp-group 用戶組
chgrp -R sftp-group /data/shared
// 將目錄分配給 sftp-user 用戶
chown -R sftp-user:sftp-group /data/shared
chmod 755 /data/shared
5. 配置 ssh , /etc/ssh/sshd_config
# AllowGroups sftp-group 只允許 sftp-group 用戶組訪問系統(tǒng)
# 允許 sftp-group 用戶組訪問
Match Group sftp-group
Match User sftp-user
# 為 sftp-group 用戶組設置訪問根目錄,為方便可以直接設置為 shared 目錄
ChrootDirectory /data/shared
# 密碼認證
PasswordAuthentication yes
# 禁止 TCP Forwarding
AllowTcpForwarding no
# 禁止 X11 Forwarding
X11Forwarding no
# 強制該組用戶僅僅使用SFTP
ForceCommand internal-sftp
6. 重啟服務,重啟系統(tǒng)以生效
/etc/init.d/ssh restart
sudo reboot now
7. 基礎 sftp 命令
// 連接
sftp -p sftp-user@192.168.1.1
// 上傳文件
put 本地文件的路徑 將文件版保存到遠程主機的路徑
// 下載文件
get 遠程主機下文件的路徑 將文件保存到本地電腦的路徑
如果你鏈接服務器的時候出現(xiàn)下面的提示:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
這個問題的原因是ChrootDirectory的權限問題,你設定的目錄必須是root用戶所有,否則就會出現(xiàn)問題。所以請確保sftp用戶根目錄的所有人是root, 權限是 750 或者 755。注意以下兩點原則:
目錄開始一直往上到系統(tǒng)根目錄為止的目錄擁有者都只能是 root,用戶組可以不是 root。
目錄開始一直往上到系統(tǒng)根目錄為止都不可以具有群組寫入權限
上面2點一定注意,仔細檢查。我就是因為這個問題,導致一直有這個問題。仔細檢查配置后,解決問題。