linux配置sftp及权限设置

前言1:应用场景:对于数据量很大的交互,对接方不愿意通过接口方式对接式可采用ftp的方式数据交互。

A——>上传数据文件到sftp服务器

    *:需要给A开设一个只用于sftp上传的账号,并且只能在指定目录下活动。

B——>从sftp服务器上获取数据文件

    *:也需要开设一个sftp账号,权限设置视情况而定。

前言2:服务器版本为Centos6.5, 采用系统自带的internal-sftp, 限制用户只能在自己的目录下活动,这里需要使用到chroot,openssh 4.8p1以后都支持chroot,我现在用的是CentOS 6.5,自带的openssh已经是5.3p1,足够了。

1、 查看 openssh的版本,如果低于4.8p1,需要自行升级安装

#    ssh -V

2、 创建sftp组

#    groupadd sftp

3、 创建一个sftp用户,名为guest

#    useradd -g sftp -s /bin/false guest

    *: /bin/false  表示不能通过ssh的方式登录

4、设置密码

#     passwd  guest

    *:输入两次密码,回车即可。也可通过此命令修改已有的账号密码。

5、创建用户活动的根目录

#     mkdir -p /5108/sftp

#     usermod -d /5108/sftp guest

6、配置sshd_config

#     vi /etc/ssh/sshd_config

    找到如下这行,并注释掉

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

    添加如下几行:

    Subsystem       sftp    internal-sftp  # 指定使用sftp服务使用系统自带的internal-sftp

    Match Group sftp   # 匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割

    ChrootDirectory /5108/sftp/ # 用chroot将用户的根目录指定到 /5108/sftp/, 可设为"/",代表根目录。

    ForceCommand    internal-sftp  # 指定sftp命令

    AllowTcpForwarding no  # 允许用户能使用端口转发

    X11Forwarding no # 允许用户能使用端口转发

     :wq保存并退出

7、 设定Chroot目录权限

#     chown root:sftp /5108/sftp

#     chmod 755 /5108/sftp

*:权限必须为755

8、 建立SFTP用户登入后可写入的目录

照上面设置后,在重启sshd服务后,用户 guest 已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供 guest 上传文件。这个目录所有者为 guest,所有组为sftp,所有者有写入权限,而所有组无写入权限

#    mkdir /5108/sftp/ABH

#    chown guest:sftp /5108/sftp/ABH

#    chmod 755 /5108/sftp/ABH

*: 权限可设置为777,代表组的所有用户都拥有所有权限。

9、 修改/etc/selinux/config文件中的SELINUX="" 为 disabled或者

#    setenforce 0

10、 重启sshd服务

#     service sshd restart

测试ssh能否登录:

ssh guest@127.0.0.1

测试sftp能否登录:

sftp guest@127.0.0.1

 

到此,我们已经把A的账号建立好了,并已经设置了相应的权限。下面再配置B,也就是我们系统下载文件的账号。

#     useradd -g sftp -s /bin/false  consftp

#     passwd  consftp

设置账号后,就能通过sftp的方式登录了,再配置下路径:

#    usermod -d /5108/sftp/ABH consftp

 

参考资料:http://blog.sina.com.cn/s/blog_4fd50c3901018a0l.html

理解chroot:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

补充:

groupdel命令:删除组

groupdel 命令用于删除不再需要的组,如果指定的组中包含用户,则必须先删除组里面的用户>以后,才能删除组。

#     sudo groupdel test

 

vipw

  -g, --group                  编辑 group 数据库  
  -h, --help                    显示此帮助信息并推出  
  -p, --passwd                  编辑 passwd 数据库  
  -q, --quiet                  安静模式  
  -R, --root CHROOT_DIR        chroot 到的目录  
  -s, --shadow                  编辑 shadow 或 gshadow 数据库 

问题:

Write failed: Broken pipe                                                                                               

Couldn't read packet: Connection reset by peer

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755

关键是ChrootDirectory /5108/sftp/%u 目录的配置,可更改目录为"/"试试

 

后续:

第一次在设置第二个账号的时候,重复创建了目录,设置了权限,所以导致第一个账号也连接不上。折腾了很久,在此记录下,引以为戒,以后配置方面的东西,一定要先看懂,了解流程。切记切记......

转载于:https://my.oschina.net/u/2489726/blog/737259

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux设置SFTP,可以通过以下步骤进行操作: 1. 确保已经安装了OpenSSH服务器。可以使用以下命令检查是否已安装: ``` sudo apt-get install openssh-server ``` 2. 打开SSH配置文件`/etc/ssh/sshd_config`,并确保以下配置项已启用或添加: ``` Subsystem sftp internal-sftp Match user sftpuser ChrootDirectory /data/sftp ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no ``` 这些配置项的含义如下: - `Subsystem sftp internal-sftp`:指定使用系统自带的internal-sftp作为SFTP服务。 - `Match user sftpuser`:匹配用户,可以根据需要添加多个用户或组。 - `ChrootDirectory /data/sftp`:设置用户的SFTP根目录为`/data/sftp`,确保用户只能在自己的目录下活动。 - `ForceCommand internal-sftp`:强制执行内部SFTP命令,并忽略任何`~/.ssh/rc`文件中的命令。 - `X11Forwarding no`:禁止用户使用X11转发。 - `AllowTcpForwarding no`:禁止用户使用端口转发。 3. 保存并关闭配置文件。 4. 重启SSH服务以使配置生效: ``` sudo service ssh restart ``` 5. 确保用户的SFTP根目录已创建,并设置正确的权限: ``` sudo mkdir /data/sftp sudo chown root:root /data/sftp sudo chmod 755 /data/sftp ``` 这将创建一个名为`/data/sftp`的目录,并将其所有权设置为root用户。 6. 创建SFTP用户并设置密码: ``` sudo adduser sftpuser sudo passwd sftpuser ``` 这将创建一个名为`sftpuser`的用户,并设置密码。 现在,您已经成功设置SFTP服务,并限制了用户只能在其指定的目录下进行操作。用户可以使用SFTP客户端连接到服务器,并通过SFTP协议进行文件传输。 #### 引用[.reference_title] - *1* *2* [Linux服务器下搭建SFTP服务](https://blog.csdn.net/huanglm_OneWholeLife/article/details/124636003)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [linux配置sftp权限设置](https://blog.csdn.net/weixin_36108913/article/details/116608101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值