• SFTP账号建立与用法


    摘自:https://blog.csdn.net/weixin_44654338/article/details/123404028

    1、SFTP简述
    SFTP(Secure File Transfer Protocol)即文件加密传输协议 这种传输方式更为安全,传输双方既要进行密码安全验证还要进行基于密钥的安全验证,有效的防止了“中间人”的威胁和攻击。

    2、SFTP与FTP的区别
    FTP是一种文件传输协议,它的目的就是为了传输文件,有独立的守护进程,使用20、21两个端口,20是数据链路的端口,21是控制链路的端。
    SFTP也是用来传输文件的,但它的传输是加密的是ssh服务的一部分没有单独的守护进程,可以看做是ssh服务文件传输方案。SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。但是这种安全是以牺牲效率为代价的,也就是说SFTP的传输效率比FTP要低,在linux系统中传输默认的端口为22端口。

    3、结果测试说明
    a、测试用户是否固定在家目录下
    b、测试上传下载是否成功
    c、测试sftp账号ssh能否登录

    4、创建sftp账号注意事项
    a、一定要备份ssh配置文件,养成修改前备份的习惯
    b、ChrootDirectory 所指定目录的所有都必须为root 且权限不能大于755。例:/home/sftpuser1
    c、因为指定家目录无所建用户权限,单独新建目录并进行目录权限更改以供sftp账号使用 例:/home/sftpuser1/test1 (只对test1下具备操作权限,上级目录无权限)
    d、sshd文件配置内容说明:
    ##Match Group sftp 这一行是指定以下的子行配置是匹配 sftp 用户组的。Match user userA,userB 则是匹配用户。
    ##ChrootDirectory /data/sftp/%u 设定属于用户组 sftp 的用户访问的根文件夹。%h 代表用户 home 目录,%u 代表用户名。
    ##ForceCommand internal-sftp 该行强制执行内部 sftp,并忽略任何 ~/.ssh/rc 文件中的命令。
    ##AllowTcpForwarding no 是否允许 TCP 转发,默认值为 "yes", 禁止 TCP 转发并不能增强安全性,除非禁止了用户对 shell 的访问,因为用户可以安装他们自己的转发器。
    ##X11Forwarding no 是否允许进行 X11 转发。默认值是 "no",设为 "yes" 表示允许。如果允许 X11 转发并且 sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用 X11 转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止 X11 转发并不能禁止用户转发 X11 通信,因为用户可以安装他们自己的转发器。

    5、按规划新建sftp测试账号代码

     1 useradd -d /home/sftpuser1 -s /sbin/nologin test1
     2 echo 123456|passwd --stdin test1
     3 useradd -d /home/sftpuser2 -s /sbin/nologin test2
     4 echo 123456|passwd --stdin test2
     5 chown root. /home/sftpuser1
     6 chmod 755 /home/sftpuser1
     7 chown root. /home/sftpuser2
     8 chmod 755 /home/sftpuser2
     9 mkdir /home/sftpuser1/test1
    10 mkdir /home/sftpuser2/test2
    11 chown test1. /home/sftpuser1/test1
    12 chown test2. /home/sftpuser2/test2
    13  
    14 sed -i.bak 's/Subsystem/#Subsystem/' /etc/ssh/sshd_config
    15  
    16 cat >> /etc/ssh/sshd_config << EOF
    17 Subsystem    sftp    internal-sftp
    18 Match User test1
    19     X11Forwarding no
    20     AllowTcpForwarding no
    21     ChrootDirectory /home/sftpuser1
    22     ForceCommand internal-sftp
    23 Match User test2
    24     X11Forwarding no
    25     AllowTcpForwarding no
    26     ChrootDirectory /home/sftpuser2
    27     ForceCommand internal-sftp
    28 EOF
    29  
    30 systemctl restart sshd
    31  

    6、按计划进行测试

    a、测试用户是否固定在家目录下

    测试test1
    [root@localhost ~]# sftp test1@172.20.10.5
    The authenticity of host '172.20.10.5 (172.20.10.5)' can't be established.
    ECDSA key fingerprint is SHA256:3rhFGJS6km8yPby5scchYZDbX1aQtQ71xZs9f+ayAfk.
    ECDSA key fingerprint is MD5:c6:37:f8:4a:ba:90:86:b7:41:d4:b7:aa:e4:92:0f:4e.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '172.20.10.5' (ECDSA) to the list of known hosts.
    test1@172.20.10.5's password: 
    Connected to 172.20.10.5.
    sftp> pwd
    Remote working directory: /
    sftp> ls
    test1  
    sftp> cd /root/
    Couldn't canonicalize: No such file or directory
    sftp> cd /home/sftpuser2
    Couldn't canonicalize: No such file or directory
    sftp> 

    我们可以看到已经固定在家目录内,对其他目录无权限
    b、测试上传下载是否成功

    [root@localhost ~]# touch /home/sftpuser1/test1/sftp_test2.txt
    [root@localhost ~]# sftp test1@172.20.10.5
    test1@172.20.10.5's password: 
    Connected to 172.20.10.5.
    sftp> put 
    anaconda-ks.cfg    sftp_test.txt     tools/               
    sftp> cd test1/
    sftp> put sftp_test.txt
    Uploading sftp_test.txt to /test1/sftp_test.txt
    sftp_test.txt                                           100%    0     0.0KB/s   00:00    
    sftp> ls
    123              sftp_test.txt    sftp_test2.txt
    sftp> get 
    123/             sftp_test.txt    sftp_test2.txt   
    sftp> get sftp_test2.txt 
    Fetching /test1/sftp_test2.txt to sftp_test2.txt
    sftp> quit
    [root@localhost ~]# ll
    total 748
    -rw-------. 1 root root   1569 Mar  4 23:38 anaconda-ks.cfg
    -rw-r--r--  1 root root      0 Mar 10 17:04 sftp_test2.txt
    -rw-r--r--  1 root root      0 Mar 10 16:56 sftp_test.txt
    drwxr-xr-x. 2 root root      6 Mar  9 14:05 tools
    [root@localhost ~]# ll /home/sftpuser1/test1/
    total 0
    drwxr-xr-x 2 test1 test1 6 Mar 10 16:53 123
    -rw-r--r-- 1 root  root  0 Mar 10 17:04 sftp_test2.txt
    -rw-r--r-- 1 test1 test1 0 Mar 10 17:04 sftp_test.txt
    [root@localhost ~]# 

    可以看到,成功上传以及下载文件,至此SFTP账号配置完毕。

    最后我们在测试下sftp账号能否ssh登录主机,正常为不能登录

    [root@localhost ~]# ssh test1@172.20.10.5
    test1@172.20.10.5's password: 
    This service allows sftp connections only.
    Connection to 172.20.10.5 closed.

    至此测试完毕,ssh无法登录 提示: "This service allows sftp connections only.(此服务仅允许 sftp 连接。)"

    7、SFTP用法
    连接SFTP

    sftp username@IP(回车后输入账号密码进入)

    上传文件至服务器内(上传不添加服务器目录则默认上传到当前所在位置)

    put [filename] [服务器上传文件目录]

    从服务器下载文件至本地(不加地址则默认下载至登陆前位置)

    get [服务器地址及文件] [本地下载到的位置]

    当然还有查看和进入目录的命令

    ls
    cd [目录]
  • 相关阅读:
    【11】 Java基础 <十一> —— equals的重写
    【10】 Java基础 <十> —— 用个人方法实现构造器的排序
    【9】 Java基础<九> —— 构造器的重载
    【8】 Java基础 <八> —— 方法的重载
    【7】 Java基础 <七> —— 自动装箱 自动拆箱
    【6】 Java基础 <六> —— super关键字
    Linux ssh下实现免密码登录(转载)
    Centos7 安装配置python3虚拟环境 virtualenvwrapper(转载)
    Linux 安装python3.7.0
    TOMCAT 日志自动删除
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/16625203.html
Copyright © 2020-2023  润新知