zoukankan      html  css  js  c++  java
  • centos安装sftp服务win搭建 sftp 服务器

     

    Centos7配置fstp

    1 创建用户 useradd -s /sbin/nologin -M sftpuser

    2  设置密码 passwd  sftpuser

    3  mkdir /sftp

    4 cd /sftp

    5 mkdir sftpuser

    6 chown -R sftpuser:sftpuser sftpuser 

    7 vi /etc/ssh/sshd_config

        

             #注释掉这行

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

            添加这行:

            Subsystem sftp internal-sftp  #指定使用sftp服务使用系统自带的internal-sftp,如果不添加,用户无法通过sftp登录。

            #添加在配置文件末尾

            Match User sftpuser #匹配用户,如果要匹配多个组,多个组之间用逗号分割

              ChrootDirectory /sftp/%u
              #用chroot指定用户根目录
              #这里的%u指的是账号名,/sftp/sftpuser
              ForceCommand internal-sftp #指定sftp命令
              X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
              AllowTcpForwarding no

    8  systemctl restart sshd

    9    sftp -oPort=22 sftpuser@127.0.0.1

      packet_write_wait: Connection to 127.0.0.1 port 22: Broken pipe
      Couldn't read packet: Connection reset by peer

    10  无法登录问题处理

          chown -R root:root /sftp/sftpuser

          mkdir  /sftp/sftpuser/data

          cd /sftp/sftpuser/

          chown  sftpuser:sftpuser  data

    11  systemctl restart sshd

    12    sftp -oPort=22 sftpuser@127.0.0.1

         sftp> pwd

         sftp> lpwd

         sftp> cd  /data

         可以查看下sftp业务目录与操作系统目录的差异。

     
     
     

    centos安装sftp服务

     

    一、创建sftp服务数据目录及相关测试用户

    复制代码
    [root@localhost ~]# mkdir -pv /data/sftp/                #sftp数据目录
    [root@localhost ~]# chown root:root -R /data/sftp/       #一定要是root用户,否则无法chroot
    [root@localhost ~]# chmod 755 -R /data/sftp/             #权限最低需要保证普通用户可以进入
    [root@localhost ~]# groupadd sftp                        #sftp服务组,sftp服务可以设置匹配组或单个用户来设置,如果是单个用户可以忽略
    [root@localhost ~]# useradd -d /data/sftp/user1 -m -g sftp -s /sbin/nologin user1   
    [root@localhost ~]# id user1
    [root@localhost ~]# echo "123456" |passwd --stdin user1  #添加密码。测试环境从简,生产不建议此密码,可以通过网页 https://suijimimashengcheng.51240.com/ 或mkpasswd命令生产(需要安装expect软件包)
    复制代码

    二、修改sshd服务配置文件,以组的方式管理sftp用户权限

    修改前配置

    修改后:

    配置解释:

    复制代码
    Subsystem sftp internal-sftp     #使用sftp服务使用系统自带的internal-sftp
    Match Group sftp                 #匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
    ChrootDirectory /data/sftp/%u    #用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
    ForceCommand internal-sftp       #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令
    AllowTcpForwarding no            #不允许转发TCP协议,默认是yes,如果用户可以shell访问则建议为yes
    X11Forwarding no                 #是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如果启用了 UseLogin ,那么X11转发将被自动禁止。
    复制代码

    重启服务,可能出现的错误:

    复制代码
    [root@localhost ~]# systemctl restart sshd   #重启服务
    Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
    [root@localhost ~]# tail /var/log/messages 
    Jul  4 14:13:01 localhost systemd: Starting Session 3553 of user root.
    Jul  4 14:13:53 localhost systemd: Stopping OpenSSH server daemon...
    Jul  4 14:13:53 localhost systemd: Starting OpenSSH server daemon...
    Jul  4 14:13:53 localhost sshd: /etc/ssh/sshd_config line 145: Directive 'UseDNS' is not allowed within a Match block   #报错信息
    Jul  4 14:13:53 localhost systemd: sshd.service: main process exited, code=exited, status=255/n/a
    Jul  4 14:13:53 localhost systemd: Failed to start OpenSSH server daemon.
    Jul  4 14:13:53 localhost systemd: Unit sshd.service entered failed state.
    Jul  4 14:13:53 localhost systemd: sshd.service failed.
    Jul  4 14:14:01 localhost systemd: Started Session 3554 of user root.
    Jul  4 14:14:01 localhost systemd: Starting Session 3554 of user root.
    复制代码

    这是因为UseDNS 在我们的sftp设置块下方,按我上面的配置就没有此问题了。

    三、客户端连接测试

    1.服务端为该用户目录授权

    复制代码
    [root@localhost ~]# cd /data/sftp/
    [root@localhost sftp]# ll
    总用量 0
    drwx------ 2 user1 sftp 62 2019-07-04 05:12 user1
    [root@localhost sftp]# chown root:root user1
    [root@localhost sftp]# chmod 755 user1/
    [root@localhost sftp]# cd user1/
    [root@localhost user1]# mkdir upload
    [root@localhost user1]# chown user1:sftp upload/
    复制代码

    2.客户端测试连接

    复制代码
    [root@localhost ~]# sftp user1@172.16.150.135  #注意连接的用户名
    user1@172.16.150.135's password: 
    Connected to 172.16.150.135.
    sftp> ls
    upload  
    sftp> cd upload/
    sftp> mkdir test
    sftp> rmdir test
    sftp> help  #查看命令帮助
    Available commands:
    bye                                Quit sftp
    cd path                            Change remote directory to 'path'
    chgrp grp path                     Change group of file 'path' to 'grp'
    chmod mode path                    Change permissions of file 'path' to 'mode'
    chown own path                     Change owner of file 'path' to 'own'
    df [-hi] [path]                    Display statistics for current directory or
                                       filesystem containing 'path'
    复制代码

    可能出现的报错:

    packet_write_wait: Connection to 172.16.150.135 port 22: Broken pipe
    Couldn't read packet: Connection reset by peer

    出现以上报错,通常是因为用户的目录权限有问题,这也是sftp服务最容易出现问题的地方。我们只要抓住以下两个要点(原则)

    由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root 
    由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限

     四、根据单个用户配置(其他参照组配置即可)

    Match User zara_sftp   #使用User关键字  后面接用户名
    ChrootDirectory /data/sftp/zara_sftp  #用户数据目录,注意权限
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    "一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少
     
     
     
     
     

    在Windows上使用sftp工具—WinSCP
    首先,让我们来看几种SFTP SSH工具

      SFTP Windows客户端:WinSCP开源免费、FileZilla 开源免费

      SFTP Windows服务器端:FileZilla_Server-0_9_41.exe 开源免费

      SSH Windows客户端:puTTY . 开源免费、SecureCRT 商业付费软件,不过在WINDOWS中TREE时有乱码。

      非对称密钥对生成工具,超小型:puttygen.exe, pageant.exe

    下面,我们就以WinSCP来讲解如何使用。

      从https://sourceforge.net/projects/winscp/?source=typ_redirect上点击“download”按钮下载安装包,下载下来后为:WinSCP-5.11.3-Setup.exe,双击一直点下一步安装即可。

      安装完成,双击运行,弹出如下对话框,输入主机名和端口号。

      然后根据验证方式进行填写,验证方式:

      1.用户名、密码,输入用户名密码即可

      2.私钥验证。点“高级...”按钮,弹出如下对话框。

      选择本地的密钥文件,点“打开”。

      点“打开”,弹出如下对话框。

      点“确定”。

      输入私钥密码,点“确定”。

      将生成ppk私钥文件,点击“保存”。此时,回到原弹出框。

      点“确定”,回到登录框。

      点“登录”按钮,依次输入SFTP用户名和入密钥密码即登录成功。

      登录成功后,可以查看SFTP服务器上的文件列表,同时还可以通过界面操作新建目录、新建文件、删除目录、删除文件等。

    Windows系统搭建 sftp 服务器
    一、下载 freeSSHD.exe

      傻瓜式安装,可百度

      注意:设置的 sftp 根路径不要出现中文,会出错

    二、sftp 客户端

      FileZilla

    三、问题解决

      1、Windows 系统没有 sftp.exe 文件,百度的博客各种安装完成后用 sftp 命令来测试连接,真坑我这种菜鸟。(当然不用这个测试的话就不用安装了)

        最后解决方式是,安装了 openSSH for Windows,也是傻瓜式安装,主要为了取得 安装目录in 目录下的 sftp.exe。

  • 相关阅读:
    web安全-接入层注入
    web安全-密码安全
    web安全-传输安全
    Jenkins-安装
    RobotFramework-关键字
    RobotFramework-调用.py文件
    RobotFramework-登录
    SQL-行转列(PIVOT)实例1
    SQL-AdventureWorks样例数据库
    TestDescription文档描述测试过程
  • 原文地址:https://www.cnblogs.com/xinxihua/p/14260038.html
Copyright © 2011-2022 走看看