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