zoukankan      html  css  js  c++  java
  • 非root用户搭建sftp以及进行简要使用的介绍

    sftp的简介


    • 关于sftp
       sftp是Secure FileTransferProtocol的缩写,安全文件传送协议,可以为传输文件提供一种安全的加密方法。
       sftp与 ftp有着几乎一样的语法和功能,SFTP为 SSH的一部分,是一种传输文件到服务器的安全方式。
       其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File TransferProtocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。它的优势在于可以利用安全的连接传输文件,还能遍历本地和远程系统上的文件系统。
       由于采用明文传输用户名和密码,FTP协议是不安全的。在同一机房中只要有一台服务器被攻击者控制,它就可能获取到其它服务器上的FTP密码,从而控制其它的服务器。
    来源: https://www.jianshu.com/p/f46982f5b03b
    
    • 关于 ssh
       简单说,SSH是一种网络协议,用于计算机之间的加密登录。
       如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
       最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
       需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
       此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。
    来源: http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
    
    • 自己的理解
    1. OpenSSH 是为了能够安全的在网络上进行信息传输的一种工具. 大部分情况下他基于OpenSSL进行编译安装与使用. 
    2. sftp是SSH协议上面为了实现安全的文件传输的一个扩展,能够实现明文传输ftp协议的大部分功能, 但是因为基于OpenSSL的全加密传输,在不可信的网络上面更加安全和可靠.
    3. 为了安全, 一般的sftp服务器一般需要设置为 /bash/nologin 避免能够sftp客户端密码外泄后导致服务器出现安全隐患. 
    4. sftp没有单独的 daemon进程, 需要使用 sshd的驻留进程进行处理, 修改时要比较小心, 避免造成sshd服务异常,无法远程连接服务器.
    5. 如果使用非root用户时 上传目录的权限要求比较严格,要求sftp的用户的目录比如是root用户才可以读写,的兵器不能是 777 建议是 755, 如果要进行上传,需要在sftp用户的目录下面 单独进行添加目录 赋予sftp的用户 属主权限才可以进行相应处理.
    

    搭建过程


    1. 创建用户组和用户
    groupadd sftpgroup
    useradd -g sftpgroup -M -s /sbin/nologin sftpuser 
    # 注意必须赋予 nologin 已策安全
    2. 修改sshd的配置文件
    vim /etc/ssh/sshd_config
    # 注意很多网页的说法挺多 我都测试了下,发现如下修改就可以. 
    # 注意 第一行Subsystem 是原来就有的, 需要注意一下. 
    Subsystem       sftp    /usr/libexec/openssh/sftp-server
    Match Group sftpgroup
    X11Forwarding no
    AllowTcpForwarding no
    ChrootDirectory %h
    ForceCommand internal-sftp
    # 注意 ChrootDirectory 指向的是sftpuser 对应的 家目录 后面进行设置, 需要严格注意权限问题
    3. 创建sftpuser的相关目录以及权限
    # 注意目录需要选择一个空间比较足的机器
    # 注意需要定期备份, 建议可以使用rsync 将文件备份到其他物理机甚至是其他机房的机器上面.
    # 注意家目录权限比较特殊, 是 sftpgroup的 用户组, 但是是 root 用户的属主. 
    # 注意目录必须是 755的权限 
    mkdir -p /data/sftp/
    usermod -d /data/sftp/ sftpuser
    chown root:sftpgroup /data/sftp
    chmod 755 /data/sftp
    mkdir /data/sftp/upload
    chown sftpuser:sftpgroup /data/sftp/upload
    chmod 755 /data/sftp/upload -R
    4. 设置完成后 进行一次 sshd服务的重启
    systemctl restart sshd
    

    使用验证


    • 如果启动连接不上 提示一些错误信息 可以参考如下日志内的信息
    /var/log/secure
    
    • 注意 Linux的系统日志非常值得学习和研究 遇到问题多看日志, 跟写代码时里面调试的效果差不多.
    • 使用lftp 进行验证, 避免每次都输入密码
    yum install lftp
    # 只需要 base 的repository 就可以了 ,安装还是很简单的.
    登录sftp 服务器. 
    lftp sftpuser,yourpassword sftp://127.0.0.1/upload
    一般就可以登录
    [root@k8s-master01 ~]# lftp -u sftpuser,Password sftp://127.0.0.1/upload
    cd 成功, 当前目录=/upload                                
    lftp sftpuser@127.0.0.1:/upload> 
    
    • 命令简介
    pwd # 展示远程工作目录, 注意这里面不需要添加 sftpuser的家目录, 也就是不需要加属主是root用户的那部分目录.
    lpwd # 展示当前操作者的目录,也就是执行命令之前的目录.
    put #  上传文件
    get # 下载文件
    mkdir # 创建文件夹
    
    • 需要注意的一点是 lftp 好像不能上传目录, sftp 直接的命令应该是可以的.
    • 一个比较全的命令介绍 , 注意需要使用 sftp 而不是使用lftp lftp 支持的命令比较少一些. From https://www.cnblogs.com/chenyablog/p/12394932.html
    cd 路径                        更改远程目录到“路径” 
    lcd 路径                       更改本地目录到“路径” 
    chgrp group path               将文件“path”的组更改为“group” 
    chmod mode path                将文件“path”的权限更改为“mode” 
    chown owner path               将文件“path”的属主更改为“owner” 
    exit                           退出 sftp 
    help                           显示这个帮助文本 
    get 远程路径                    下载文件 
    ln existingpath linkpath       符号链接远程文件 
    ls [选项] [路径]                显示远程目录列表 
    lls [选项] [路径]               显示本地目录列表 
    mkdir 路径                      创建远程目录 
    lmkdir 路径                     创建本地目录 
    mv oldpath newpath             移动远程文件 
    open [用户@]主机[:端口]          连接到远程主机 
    put 本地路径                    上传文件 
    pwd                            显示远程工作目录 
    lpwd                           打印本地工作目录 
    quit                           退出 sftp 
    rmdir 路径                     移除远程目录 
    lrmdir 路径                    移除本地目录 
    rm 路径                        删除远程文件 
    lrm 路径                       删除本地文件 
    symlink existingpath linkpath  符号链接远程文件 
    version                        显示协议版本
    
  • 相关阅读:
    初入博客
    MFC中Enter、ESC的屏蔽及PreTranslateMessage
    数据结构中链表的创建、添加、删除、清空、倒序输出及链表倒置
    数据库重要知识点总结
    云端服务器永久运行node项目的方法!!!!!!!!
    腾讯云centeros mysql相关问题与解决指南!!!!搭建属于自己的前端服务器!!!!
    最全的正则匹配!!!!!!!!!手机号,邮箱
    win10硬盘开启 bitlocker后手动加锁
    myeclipse相同变量的颜色高亮
    一款基于Bootstrap扁平化的后台框架Ace
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/15335213.html
Copyright © 2011-2022 走看看