Ubuntu 12 上的有限 SSH 用户

Ubuntu 12 上的有限 SSH 用户

我正在服务器上运行 Minecraft。我怎样才能让我的朋友 SSH 访问我的世界文件夹(根文件夹)、命令screen和一些端口?

答案1

为了实现前两点,你必须将用户监禁到所需的目录,有时它的术语称为沙箱,它与chrootLinux 相关。

可以找到一篇好文章 hove to chroot (jail) a ssh user这里

关于第三点我不确定,但你可以看看如何使用 iptables 限制用户/组的网络访问 - 所有者匹配

但我不确定你是否必须给他这样的限制/特权。

答案2

在 FreeBSD 上,我们可以使用 jail 来限制用户。但 Linux 上没有 jail。(它可能存在,但它不是系统的一部分。)FreeBSD 上的 Jail 是操作系统级别的虚拟化。我们可以在 Linux 上实现同样的事情。我建议你阅读那篇文章,因为它也提到了一些可以做到这一点的程序。我建议在操作系统级别进行虚拟化以获得更好的性能:

http://wiki.openvz.org/Introduction_to_virtualization

所以基本上,你就像第二个操作系统一样运行,你的朋友将受到它及其内容的限制。将运行的第二个操作系统将像在文件夹内运行一样,您的朋友将无法退出它以查看文件的其余部分。他将仅限于此。这比 chroot 有更多优势,因为可以很容易地逃脱 chroot 创建的沙箱。

您将能够毫无问题地访问我的世界文件夹。但是,如果您希望您的朋友能够访问 screen,您还必须在第二个操作系统上安装 screen,并安装您希望您的朋友能够访问的所有其他内容。

通常,您的第二个操作系统将有其特定的 IP,您只需说每当有东西连接到您的计算机的端口 x 和 y 时,将其重定向到该 IP。因此,如果他通过端口(您希望他用于 SSH 的端口)连接到您的计算机,他将被重定向到第二个操作系统。与我的世界端口相同。

另外,为了让您更轻松,您可以创建一个指向“minecraft”文件夹的符号链接,这样您就不必总是转到第二个操作系统的文件夹来访问“minecraft”文件夹。

它可能不是您最好的解决方案(或者可能是),但它仍然是您应该考虑的可行解决方案,因为它不难设置,并且提供最大的安全性和隐私性。

答案3

SSH 并不是为了实现这一目标而设计的。您可能会找到一个您认为安全的解决方案,但实际上,某处可能存在后门(ssh -Wssh -o ProxyCommand等)。

我认为最好的解决方案是创建一个可以访问 minecraft 文件夹的虚拟机,并为您的朋友提供该虚拟机上的 SSH 帐户

对于您来说,最好的方法是使用操作系统级虚拟化喜欢长沙或者开放VZ,它基本上实现了改进的 chroot和其他内核级隔离机制,几乎没有性能影响。

相关内容