我正在尝试让某人通过 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
您发布的内容有什么明显错误。这里似乎有三种可能性:
- 没有什么是真正错误的,但是
sshd
需要开始。 sshd
能够运行,但是没有监听正确的 IP 地址或端口。- 有某些因素阻碍
sshd
启动。
对于以下所有内容,您必须位于root
ssh 服务器主机上。
对于 (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
将保持连接到您的终端并打印一堆调试信息。如果它由于某种原因无法继续运行,它应该会告诉您原因。