我有一台家用电脑,我创建了一个到服务器的反向端口转发。现在我想通过这台服务器让一些人访问家用电脑。我想控制这台服务器上用户的访问,所以我在 /etc/ssh/sshd_config 中添加了以下几行
Match User restricteduser
ChrootDirectory /home/restricteduser
AllowAgentForwarding no
PermitOpen localhost:3333
但当我尝试连接服务器时
ssh restricteduser@serverIP
restricteduser@serverIP's password:
我收到以下错误:
Write failed: Connection reset by peer
答案1
ssh 守护进程的日志文件应该会为您提供此处发生的情况的具体信息。检查/var/log/auth.log
。
然而,我怀疑这ChrootDirectory
就是导致问题的原因。
remoteuser
登录后,ssh 守护进程会尝试 chroot 到/home/restricteduser
并启动restricteduser
的 shell(可能是/bin/bash
)。由于已 chroot,ssh 守护进程将查找/home/restricteduser/bin/bash
。
此外,shell 所需的任何库都需要存在于 chroot 中(使用 进行检查ldd /bin/bash
),并且 shell 期望在启动时可用的任何文件也需要存在。如果 ssh 守护程序本身需要访问文件,则这些文件也需要存在。
如果restricteduser
要在登录后运行任何程序,它们也需要处于 chroot 中,以及它们的依赖库/文件。
这可能会变得相当复杂。如果你只是想提供端口转发,请查看如何创建受限的 SSH 用户以进行端口转发?