Chrooted ssh 用户无法 ssh 进入服务器:管道损坏

Chrooted ssh 用户无法 ssh 进入服务器:管道损坏

我刚刚尝试了以下操作来添加新用户、chroot 该用户并授予他通过 sftp 和 ssh 访问文件夹 /home/me/public_html 的权限:

##the following command are done by root or a sudo user
useradd <username>
##add password for new user
passwd <username>
## add user to sudo group which could be wheel or sudo depending on your setup
usermod -G wheel <username>
##add user to apache as the public html folder is part of that group
usermod -G apache <username>
##Edit sshd_config to chroot the user. Path here below is on Centos or Redhat and with nano editor up and running
nano /etc/ssh/sshd_config 

##add the end of the file add
Match User <username>
    ChrootDirectory /path/of/choice

    ForceCommand internal-sftp
## control X and save
service sshd restart

在 sshd_config 中我现在有

Match User <username>

    ChrootDirectory /home/me/public_html

ForceCommand internal-sftp 已被删除,因为没有必要根据下面的常见做法不允许 SSH 访问。

当我尝试登录时,我看到

ssh <username>@domain.com
debug1: Next authentication method: password
<username>@domain.com's password: 
debug1: Authentication succeeded (password).
Authenticated to domain.com ([xx.xxx.xx.xxx]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Write failed: Broken pipe

我在日志中使用 SFTP

Trace:  Sent password
Trace:  Access granted
Trace:  Connection reset by peer
Error:  Connection reset by peer
Error:  Could not connect to server

答案1

设置 chroot 以进行常规 SSH 访问比设置 chroot 以进行 SFTP 访问要困难得多。“internal-sftp”功能不需要 SSH 服务器启动任何外部程序,因此 chroot 环境不必支持运行外部程序。要提供常规 SSH 访问,您必须使用其他文件配置 chroot 环境以使其启动外部程序。

设置 chroot 环境的细节取决于您运行的特定操作系统。以下是几个示例页面,它们应该可以让您了解需要做什么。

答案2

ForceCommand 内部 sftp

如果强制使用 internal-sftp,则将无法通过 ssh 进入系统。


您可能还遇到其他配置问题,例如我预计您没有满足文件用户:组所有权要求 - 从文档中...

ChrootDirectory 指定身份验证后 chroot(2) 的路径。此路径及其所有组件必须是 root 拥有的目录,任何其他用户或组都无法写入。chroot 后,sshd(8) 将工作目录更改为用户的主目录。

相关内容