LINUX 搭建sftp 服務器

網上找了資料自己搭建了SFTP 服務器成功,記錄下來

打開命令終端窗口,按以下步驟操作。

0、查看openssh的版本

  1. ssh -V   
ssh -V 
使用ssh -V 命令來查看openssh的版本,版本必須大於4.8p1,低於的這個版本需要升級。

1、創建sftp組

  1. groupadd sftp  
groupadd sftp

2、創建一個sftp用戶,名爲admin,密碼爲oms@123
  1. useradd -g sftp -s /bin/false admin  
  2. passwd oms@123  
useradd -g sftp -s /bin/false mysftp
passwd mysftp

3、sftp組的用戶的home目錄統一指定到/data/sftp下,按用戶名區分,這裏先新建一個mysftp目錄,然後指定mysftp的home爲/data/sftp/mysftp
  1. mkdir -p /data/sftp/mysftp  
  2. usermod -d /data/sftp/mysftp mysftp  
mkdir -p /data/sftp/mysftp
usermod -d /data/sftp/mysftp mysftp

4、配置sshd_config
文本編輯器打開 /etc/ssh/sshd_config
 vi /etc/ssh/sshd_config

找到如下這行,用#符號註釋掉,大致在文件末尾處。
# Subsystem      sftp    /usr/libexec/openssh/sftp-server  

在文件最後面添加如下幾行內容,然後保存。
  1. Subsystem       sftp    internal-sftp    
  2. Match Group admin   
  3. ChrootDirectory /data/sftp
  4. ForceCommand    internal-sftp    
  5. AllowTcpForwarding no    
  6. X11Forwarding no  
Subsystem       sftp    internal-sftp  
Match Group sftp  
ChrootDirectory /data/sftp/%u  
ForceCommand    internal-sftp  
AllowTcpForwarding no  
X11Forwarding no

5、設定Chroot目錄權限
  1. chown root:sftp /data/sftp/mysftp  
  2. chmod 755 /data/sftp/mysftp  
chown root:sftp /data/sftp/mysftp
chmod 755 /data/sftp/mysftp

6、建立SFTP用戶登入後可寫入的目錄

照上面設置後,在重啓sshd服務後,用戶mysftp已經可以登錄。但使用chroot指定根目錄後,根應該是無法寫入的,所以要新建一個目錄供mysftp上傳文件。這個目錄所有者爲mysftp,所有組爲sftp,所有者有寫入權限,而所有組無寫入權限。命令如下:

  1. mkdir /data/sftp/mysftp/upload  
  2. chown mysftp:sftp /data/sftp/mysftp/upload  
  3. chmod 755 /data/sftp/mysftp/upload  
mkdir /data/sftp/mysftp/upload
chown mysftp:sftp /data/sftp/mysftp/upload
chmod 755 /data/sftp/mysftp/upload

7、修改/etc/selinux/config

文本編輯器打開/etc/selinux/config

  1. vi /etc/selinux/config  

將文件中的SELINUX=enforcing 修改爲 SELINUX=disabled ,然後保存。

在輸入命令


  1. setenforce 0  
setenforce 0


8、重啓sshd服務

輸入命令重啓服務。

  1. service sshd restart  
service sshd restart


9、驗證sftp環境
用mysftp用戶名登錄,yes確定,回車輸入密碼。
sftp [email protected]

顯示 sftp> 則sftp搭建成功。


-----------------------------------------------

常見問題:

如果你鏈接服務器的時候出現下面的提示:

Write failed: Broken pipe                                                                                               

Couldn't read packet: Connection reset by peer

這個問題的原因是ChrootDirectory的權限問題,你設定的目錄必須是root用戶所有,否則就會出現問題。所以請確保sftp用戶根目錄的所有人是root, 權限是 750 或者 755

也有可能是你這裏的路徑寫的不對。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章