sftp连接服务器报client_loop: send disconnect: Broken pipe的问题分析

50 篇文章 0 订阅
42 篇文章 0 订阅

一、问题现象

sftp连接服务器报"client_loop: send disconnect: Broken pipe"错误,连接被服务器关闭,相关信息如下:

# sftp sftp_ppp@1192,168,1.106
sftp_ptn@10.193.217.106's password: 
client_loop: send disconnect: Broken pipe
Connection closed.  
Connection closed

二、问题排查

检查后台日志,显示如下错误:

bad ownership or modes for chroot directory "/data/sftp_ppp"

三、报错分析

这个错误日志出现配置SFTP服务时,服务器侧chroot目录的所有权或权限设置的不正确。chroot目录是指SFTP会将用户限制在某个目录内,该目录被称为“根目录”(root directory)。所谓chroot,即change root directory(更改根目录),意味着SFTP会将用户的根目录更改为你指定的这个chroot目录。

问题出现的原因可能有:

  1. 目录的所有者不是root。

  2. 目录权限不合适,通常chroot目录的权限需要严格设置,只有root用户可以读写执行,其他用户不可访问通常是755或700)。

四、解决方法

以下步骤操作在服务器端进行操作:

1、检查权限

使用ls -ld 查看相关目录的所有权

# ll -ld /data     
drwxr-xr-x. 28 root root 4.0K  4月 17 16:09 /data
# ll -ld /data/sftp_ppp
drwx------. 2 sftp_ppp sftp_ppp 109  5月 16 11:26 /data/sftp_ppp
2、结果分析

本例/data/sftp_ppp目录为提供给sftp_ppp用户数据目录,如上检查发现/data为root用户所有,权限755,满足要求,sftp_ppp目录属主为sftp_ppp用户,权限为775,作为chroot目录不满足要求。因此需新增chroot目录,把用户数据目录移到其下,并调整权限:

# mkdir -p /data/home
# chown root:root /data/home && chmod 755 /data/home
# mv /data/sftp_ppp /data/home
# chmod 755 /data/home/sftp_ppp # 或 chmod 700 /data/home/sftp_ppp
# chown sftp_ppp:sftp_ppp /data/home/sftp_ppp -R
3、配置SFTP服务器

在SFTP服务器etc/ssh/sshd_config中如下进行配置:

Match User sftp_ppp 
ChrootDirectory /home/data
ForceCommand internal-sftp 
AllowTcpForwarding no 
X11Forwarding no

用户登录以后,在/sftp_ppp目录中进行数据存取。

4、重启SFTP服务器

更改配置后需要重启服务器SSHD服务以使更改生效。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代先生.重庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值