0


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

一、问题现象

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

# sftp sftp_ppp@1192,168,1.106
[email protected]'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服务以使更改生效。

标签: 服务器 linux 运维

本文转载自: https://blog.csdn.net/forestqq/article/details/138572609
版权归原作者 代先生.重庆 所有, 如有侵权,请联系我们删除。

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

还没有评论