Linux sftp,配置

SFTP = SSH File Transfer Protocol, 属于SSH协议的一部分, 具备sshd服务即可提供SFTP功能, 不需要额外安装

VSFTPD支持开启ssl, 但不等价于SFTP

1 新建用户

# 添加用户
useradd -d /home/u1/ u1
echo "changeme" |passwd u1 --stdin

2 sftp连接

[root@localhost ~]# sftp u1@localhost
u1@localhost's password: 
Connected to localhost.
sftp> pwd
Remote working directory: /home/u1
sftp>

3 Subsystem

Centos 7 默认使用sftp-server, 但无法结合ChrootDirectory使用, 安全性不高

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

建议使用 internal-sftp

注意:

  • ChrootDirectory指定目录的所有者必须是root
  • %u表示用户名
Subsystem       sftp    internal-sftp

Match Group sftp
	ChrootDirectory	/data/%u
	ForceCommand	internal-sftp

3.1 ERR1: Received message too long 1416128883

注意

  • subsystem使用默认的 sftp-server

  • 如果使用的 internal-sftp, 即使是nologin也能正常连接

创建用户时, shell指定nologin, 此时连接sftp抛出异常

[root@localhost ~]# useradd -d /home/u2 -s /sbin/nologin u2
[root@localhost ~]# echo "changeme" |passwd u2 --stdin

[root@localhost ~]# sftp u2@localhost
u2@localhost's password: 
Received message too long 1416128883

修改为bash后, 可正常使用; 从安全性考虑, 不允许sftp用户登录shell, 所以不建议修改

[root@localhost ~]# usermod -s /bin/bash u2
[root@localhost ~]# sftp u2@localhost
u2@localhost's password: 
Connected to localhost.
sftp> 

3.2 ERR2: Couldn’t read packet: Connection reset by peer

当配置了ChrootDirectory时, 容易出现此错误

sshd_config配置如下:

Match User u3
        ChrootDirectory /data/sftp/%u
        ForceCommand    internal-sftp

u3用户目录

[root@localhost ~]# cat /etc/passwd |grep u3
u3:x:1002:1002::/data/sftp/u3:/bin/bash

咋一看正常, 因chroot修改了用户家目录的相对路径, 所以u3的家目录此时应修改为/

[root@localhost ~]# usermod -d / u3
[root@localhost sftp]# sftp u3@localhost
u3@localhost's password: 
Connected to localhost.
sftp> 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值