zoukankan      html  css  js  c++  java
  • CentOS configuration uses the SFTP server

    SFTP,即 SSH 文件传输协议( SSH File Transfer Protocol ),或者说是安全文件传输协议( Secure File Transfer Protocol )。SFTP 是一个独立的 SSH 封装协议包,通过安全连接以相似的方式工作。它的优势在于可以利用安全的连接传输文件,还能浏览本地和远程系统上的文件系统。
    在很多情况下,SFTP都比FTP更可取,因为它具有最基本的安全特性和能利用 SSH 连接的能力,FTP是一种不安全的协议,只能在有限的情况下或在您信任的网络上使用。

     

    1 |先决条件:

    服务器 OpenSSH-Server 版本最低4.8p1,因为配置权限需要版本添加的新配置项 ChrootDirectory 来完成。

    如何查看OpenSSH版本,命令如下:

    $ ssh -V
    OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
    

    2 | 创建用户信息

      添加用户组:

    $ groupadd sftp
    

      添加用户:

    $ useradd -g sftp -s /sbin/nologin -M userrenwolecom
    
    参数注解:
    
    -g              # 加入用户组
    -s              # 指定用户登入后所使用的shell
    /sbin/nologin   # 用户不允许登录
    -M              # 不要自动建立用户的登入目录
    

      设置用户密码:

    $ passwd userrenwolecom
    

    3 |创建用户目录并设置权限
      创建sftp主目录:

    $ mkdir /data/sftp
    

      设置sftp主目录权限:

    $ chown root:sftp /data/sftp
    

      文件夹所有者必须是root,用户组可以不是root。

    $ chmod 744 /data/sftp
    

    权限不能超过755但不包括755,否则会导致登录报错。

     

    4 |创建上传目录并设置权限

      在/data/sftp/主目录下创建uploads资料夹,并设置所有者是:userrenwolecom,用户组隶属:sftp,这样新增的帐号才能有上传编辑的权限。

    $ mkdir -p /data/sftp/uploads
    $ chown userrenwolecom:sftp /data/sftp/uploads
    

    5 |修改sshd_config配置文件 

    $ vim /etc/ssh/sshd_config
    

      将此行注释掉,例如:

    #Subsystem sftp /usr/libexec/openssh/sftp-server
    

      在此行下面添加如下内容:

    Subsystem sftp internal-sftp       # 指定使用sftp服务使用系统自带的internal-sftp
    Match Group sftp                   # 匹配sftp组的用户,若要匹配多个组,可用逗号分开
    ChrootDirectory /data/sftp/        # 限制用户的根目录
    ForceCommand internal-sftp         # 只能用于sftp登录
    AllowTcpForwarding no              # 禁止用户使用端口转发
    X11Forwarding no                   # 禁止用户使用端口转发
    

      重启SSH服务

    $ systemctl restart sshd
    

    6 |测试是否能够登录、上传、下载等操作
      在10.28.204.61服务器执行以下命令登录:

    $ sftp -P 12012 userrenwolecom@10.28.204.62
    userrenwolecom@10.28.204.62's password:
    packet_write_wait: Connection to 10.28.204.62 port 12012: Broken pipe
    Couldn't read packet: Connection reset by peer
    

      报错,此问题是由于/data/sftp 目录权限分配不当所致,将此目录的所有者更改为root即可,用户组可root/sftp。

      再次测试连接:

    $ sftp -P 12012 userrenwolecom@10.28.204.62
    The authenticity of host '[10.28.204.62]:12012 ([10.28.204.62]:12012)' can't be established.
    ECDSA key fingerprint is SHA256:/YI/L4RT1QH7lkfxMCAkKnvniQslyUl15mOUKUo8K3k.
    ECDSA key fingerprint is MD5:6d:b6:f3:93:8e:48:53:24:9d:5d:c2:2a:5f:28:f4:d2.
    Are you sure you want to continue connecting (yes/no)? YES
    Warning: Permanently added '[10.28.204.62]:12012' (ECDSA) to the list of known hosts.
    userrenwolecom@10.28.204.62's password:【输入userrenwolecom用户密码回车】
    Connected to 10.28.204.62.
    sftp>
    

      连接成功,现在测试上传一个文件到10.28.204.62服务器

    上传

    sftp> put /tmp/nginx_log_stat /uploads
    Uploading /tmp/nginx_log_stat to /uploads/nginx_log_stat
    /tmp/nginx_log_stat
    

    下载

    sftp> get uploads/nginx_log_stat /mnt
    Fetching /uploads/nginx_log_stat to /mnt/nginx_log_stat
    /uploads/nginx_log_stat   100%    7   1.1KB/s   00:00
    sftp>
    

    删除

    sftp> rm /uploads/nginx_log_stat
    Removing /uploads/nginx_log_stat
    

    更多命令请参阅:

    sftp> help
    

    小结:

    在配置过程中遇到比较奇怪的问题,我将 sshd_config 配置文件中的 Match Group sftp 修改为 Match User userrenwolecom ,重启sshd后,当前终端不会断开,新建终端输入正确密码后会出现SSH登录闪退(自动关闭终端)问题,不管是用PUTTY还是Xshell均是如此,后来我将用户修改成组后就正常了,具体原因尚未可知,不过修改为组效果是一样的。如果你知道什么原因还请指教。

     

  • 相关阅读:
    设置datagrid的背影及对单元格进行设置
    利用结果集更新记录
    安装sql2000提示"以前的某个程序安装已在安装计算机上创建挂起的文件操作"解决办法
    xls.exe
    动态增加datagrid的行数
    Emergency Preparedness Resource Inventory(紧急预备资源列表系统)
    DataList中选择列的实现与数据的取得:
    Android中发送Http请求实例(包括文件上传、servlet接收)
    android文件上传到服务器
    C++获取程序执行时间
  • 原文地址:https://www.cnblogs.com/reachos/p/11737326.html
Copyright © 2011-2022 走看看