CentOS搭建SFTP

CentOS搭建SFTP

目標:實現不同用戶只能操作自己目錄

  • 登錄服務器執行命令 ssh -V 查看openssh版本,版本必須大於4.8p1.

  • 創建sftp組: groupadd sftp

  • 創建用戶: 對於每個用戶都有自己的上傳和下載目錄,用戶之間目錄完全隔離

useradd -g sftp -s /bin/false channel2
passwd channel2
  • sftp組的用戶的home目錄統一指定到/ecasdata/sftp/下,按用戶名區分,不同用戶分配不同目錄即可
mkdir -p /ecasdata/sftp/channel2/cf/
mkdir -p /ecasdata/sftp/channel2/batch/
  • 配置sshd_config,文本編輯器打開 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
  • 找到如下這行,用井號符號註釋掉.
# Subsystem      sftp    /usr/libexec/openssh/sftp-server 
  • 在文件最後面添加如下幾行內容,然後保存.
Subsystem       sftp    internal-sftp    
Match Group sftp    
ChrootDirectory /ecasdata/sftp/%u  (此處配置sftp組用戶的home目錄) 
ForceCommand    internal-sftp    
AllowTcpForwarding no    
X11Forwarding no
  • 設定Chroot目錄權限
    chown root:sftp /ecasdata/sftp/channel2/  
    chmod 755 /ecasdata/sftp/channel2/
  • 給用戶設置權限
    chown channel2:sftp /ecasdata/sftp/channel2/cf/
    chown channel2:sftp /ecasdata/sftp/channel2/batch/
    chmod 755 /ecasdata/sftp/channel2/cf/
    chmod 755 /ecasdata/sftp/channel2/batch/
  • 修改/etc/selinux/config,文本編輯器打開/etc/selinux/config
    vi /etc/selinux/config  
  • 將文件中的SELINUX=enforcing 修改爲 SELINUX=disabled 然後保存
  • 再執行命令:setenforce 0
  • 重啓sshd服務: service sshd restart
  • 驗證sftp環境: sftp [email protected]

快速構建

    以channel2爲例,創建目錄,分配目錄權限:

    useradd -g sftp -s /bin/false channel2

    passwd channel2

    輸入密碼: channel2

    確認密碼: channel2

    mkdir -p /ecasdata/sftp/channel2/cf/

    mkdir -p /ecasdata/sftp/channel2/batch/

    usermod -d /ecasdata/sftp/channel2/  channel2  修改用戶家目錄

    chown root:sftp /ecasdata/sftp/channel2/

    chmod 755 /ecasdata/sftp/channel2/

    chown channel2:sftp /ecasdata/sftp/channel2/cf/ 
     chown channel2:sftp /ecasdata/sftp/channel2/batch/ 
    chmod 755 /ecasdata/sftp/channel2/cf/
     chmod 755 /ecasdata/sftp/channel2/batch/

    驗證sftp環境: sftp [email protected] 

搭建過程中可能遇到的問題

  • 防火牆未關閉,執行命令: service iptables stop

  • 目錄權限問題:

每個用戶一個目錄,注意目錄的層次必須是用戶名

用戶目錄(channel2)及其上級目錄設置 root:sftp ,權限755
用戶目錄下子目錄設置 channel2:sftp,權限755

ChrootDirectory設置的目錄權限及其所有的上級文件夾權限,屬主和屬組必須是root;

ChrootDirectory設置的目錄權限及其所有的上級文件夾權限,只有屬主能擁有寫權限,也就是說權限最大設置只能是755。

注意:由於權限是755,導致非root用戶都無法在目錄中寫入文件,所以需要在ChrootDirectory指定的目錄下建立子目錄,重新設置屬主和權限。


例如:
這個目錄所有者爲channel2,所有組爲sftp,所有者有寫入權限,而所有組無寫入權限
chown channel2:sftp /ecasdata/sftp/channel2/cf/  
chmod 755 /ecasdata/sftp/channel2/cf/  

sftp相關命令:

  • 上傳和下載
sftp> get /var/www/fuyatao/index.php  /home/fuyatao/
將從遠程主機的  /var/www/fuyatao/目錄下將 index.php 下載到本地  /home/fuyatao/目錄下。

sftp> put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/
把本地 /home/fuyatao/downloads/目錄下的 linuxgl.pdf文件上傳至遠程主機/var/www/fuyatao/ 目錄下
  • 刪除文件或文件夾
mkdir 創建文件夾
rm 刪除文件
rmdir 刪除文件夾,但是隻能刪除空文件夾,因此要使用命令rm folder/* 把文件夾裏面的文件先清空, 再rmdir folder。而且還需要是folder裏面沒有子文件夾的情況。
  • nginx配置轉發時
sftp -oPort=port  username@IP   passward
  • 參考博客
http://blog.csdn.net/qin_weilong/article/details/69486104
http://blog.csdn.net/xinxin19881112/article/details/46831311
https://www.cnblogs.com/luyucheng/p/6094729.html
http://blog.csdn.net/s277955712/article/details/70172376
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章