Chroot ssh 用户到主文件夹导致连接被拒绝

Chroot ssh 用户到主文件夹导致连接被拒绝

我正在尝试让某人通过 ssh 访问我拥有的 (Ubuntu 14.04) 服务器,但我想限制他们只能访问自己的主文件夹。因此,我尝试遵循本教程

我首先创建了一个用户 ( sudo adduser jailuser),这样就可以使用 jailuser 登录。然后继续尝试监禁该用户,我添加了以下内容/etc/ssh/sshd_config(并重新启动了 ssh):

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

然后我创建了组 sftp:

sudo groupadd sftp

并运行以下命令来更改jailuser:

sudo usermod -G sftp jailuser
sudo usermod -s /bin/false jailuser
sudo chown root:root /home/jailuser
sudo chmod 0755 /home/jailuser

结果是我无法再登录了:ssh: connect to host xx.xxx.xx.223 port 22: Connection refused

由于我是服务器管理方面的新手,所以我在这里很困惑。有人知道我做错了什么吗?欢迎提供所有提示/技巧!

答案1

我遇到了这个问题,解决办法是将“UsePAM yes”放在“Subsystem sftp internal-sftp”节上方。重新启动 ssh 后,一切正常。

答案2

我没有发现sshd_config您发布的内容有什么明显错误。这里似乎有三种可能性:

  1. 没有什么是真正错误的,但是sshd需要开始。
  2. sshd能够运行,但是没有监听正确的 IP 地址或端口。
  3. 有某些因素阻碍sshd启动。

对于以下所有内容,您必须位于rootssh 服务器主机上。

对于 (1),运行类似“ps -fe | grep sshd”的命令来查看它是否sshd正在运行。如果没有,请尝试启动 ssh 服务器。在 Ubuntu 上,您可以运行以下命令:

/etc/init.d/ssh restart

如果sshd正在运行,请转到 (2)。sshd_config检查监听地址或者港口指令。这些指令控制服务器将侦听哪个 IP 地址和端口的连接。在大多数情况下,您会将它们注释掉(以使用默认值)或将它们分别设置为 0.0.0.0 和 22。

如果您尝试启动sshd但无法运行,请先检查日志文件中/var/log是否有来自 的消息sshd。它们可能表明它遇到了什么问题。如果这没有成功,您可以sshd以交互方式运行并进行调试:

/usr/sbin/sshd -ddd            # Listen on the default port 22
/usr/sbin/sshd -ddd -p 1022    # Listen on port 1022

sshd将保持连接到您的终端并打印一堆调试信息。如果它由于某种原因无法继续运行,它应该会告诉您原因。

相关内容