条条大路通罗马,第二部分

作者:Marcel Gagné

上次我们在 系统管理员专栏 相聚时,我谈到了一个名为 Squirrelmail 的基于 Web 的电子邮件软件包。 对这篇文章的惊人反响让我相信,当您外出时访问您的电子邮件(或任何数据)是一个与您息息相关的话题。 好吧,条条大路通罗马(反之亦然)是本系列文章的主题,今天,我们将继续探讨从彼处到达此处的另一种方法……但首先,关于上一专栏的一些注意事项。

一些读者正确地指出,将数据目录(如上一篇文章中所述)移动到 Web 服务器根目录之外的位置可能不是一个坏主意。 另一点指出的是,您可以让 Squirrelmail 通过您安全的、启用 SSL 的 Apache 服务器运行(构建这样一个服务器在这篇文章中有所介绍),以提供更高的安全性(但这您已经知道了)。

当远程访问您的邮件(或任何其他类型的 Web 文档/应用程序)时,您可能需要考虑的另一种保护类型是 Apache 自己的访问控制。 你们都知道那些在您访问某些网站时弹出的漂亮的“您必须输入密码”框。 好吧,您可以对您的 Squirrelmail 应用程序执行相同的操作。 这是通过 .htaccess 文件完成的,该文件位于需要限制访问的目录中。 这是基本格式。

   AuthName        "WebMail:  Restricted access"
   AuthType        Basic
   AuthUserFile    /usr/local/apache/.mailpass
   <Limit GET POST>
   require valid-user
   </Limit>

好的,这就是内幕消息。 AuthUserFile 参数指向实际密码文件的位置。 请注意,我将我的密码文件放在我的 Web 服务器的文档根目录之外。 这样,该文件就无法通过简单的 HTTP 请求下载。 您可以使用 htpasswd 命令将密码添加到此文件,如下所示

   htpasswd -c passwordfile username

显然,htpasswd 命令的路径将因您的安装而异。 Red Hat 用户可能会在 /usr/bin/htpasswd 中找到它。 但是,如果您是从源代码构建 Apache 服务器,则该程序很可能位于 /usr/local/apache/bin 目录中。 这里需要注意一点:-c 标志会在之前不存在密码文件的情况下创建一个新密码文件。 除非您想刷新整个文件并重新开始,否则您不希望使用此标志。 您可能想要使用(并且可能应该使用)的另一个标志是 -m 标志,它强制对密码进行 MD5 加密。

   htpasswd -m /usr/local/apache/.mailpass natika

一旦我将“natika”添加到列表中,系统将提示我输入密码,然后要求我确认该密码。 差不多完成了...

如果您已完成我到目前为止告诉您的所有操作,并且您访问了相应的网页,它将无法工作。 这是因为您的 Apache 服务器默认不接受 .htaccess 文件; 您需要启用此功能。 为此,请调出 httpd.conf 文件(根据您的发行版或安装,这可能是 /etc/httpd/conf/httpd.conf 或 /usr/local/apache/conf/httpd.conf)在您喜欢的编辑器中,并查找以下行

   AllowOverride None

此行至少出现在三个不同的区域中。 一个涵盖服务器根目录,一个涵盖文档根目录 (htdocs 或 html),一个是 cgi-bin,另一个是图标目录。 您需要将“None”更改为“All”。

   AllowOverride All

我倾向于设置除图标目录之外的所有目录,因为我认为那里没有太多需要保护的东西(只是来自 Apache 安装的默认图标)。 就是这样。 重新启动 Apache,然后重新启动浏览器,您应该会获得一个漂亮的密码身份验证提示。 这都是很棒的信息,因为您几乎肯定希望对我们今天要讨论的下一件事这样做。

有时,您需要访问您的系统。 具体来说,您需要获得 shell 访问权限。 如果您碰巧在别人的网络上,或者如果您没有携带方便的笔记本电脑(计算机),这可能会成为问题。 如果您是注重安全性的类型,拒绝 Telnets 而支持 SSH 连接,问题会变得更糟。 几乎每台 PC 都有某种 Telnet 终端应用程序(尽管其他操作系统附带的标准应用程序往往非常糟糕),但并非每个人都有 SSH 终端供您使用。 如果您的系统上有 Web 服务器,您的问题就解决了。 几乎所有连接的人都有 Web 浏览器,这就是您使用 Matthias L. Jugel 和 Marcus Meißner 的 Java 终端应用程序所需要的全部。

要获取 Java 终端应用程序,请查看以下地址。

     www.mud.de/se/jta/index.html

当您在那里时,单击“下载”链接并获取 jta20.jar 文件(是的,是 jar,而不是 tar)。 然后,获取示例 default.conf 文件。 这将使您在设置时更轻松。

现在,将这些文件复制到 Web 服务器层次结构中的某个位置; 您可以随意命名。 为了实际从 Web 浏览器中使用它,您只需要创建最简单的页面。 我将其保存为 SSHTest.html; 这是它的样子

     <html>
     <head>
        <title>Web-based SSH Access</title>
     </head>
     <body bgcolor="White">
     <center>
     <applet CODEBASE="./"
             ARCHIVE="jta20.jar"
             CODE="de.mud.jta.Applet"
             WIDTH=590 HEIGHT=360>
     <param NAME="config" VALUE="sshapp.conf">
     </applet>
     </center>
     </body>
     </html>

特别注意 param NAME= 行。 在这种情况下,我传递的值是 sshapp.conf,它定义了我的 SSH 启用终端会话的所有参数。 这只是您之前获取的 default.conf 文件的修改版本。 这些参数很多,浏览 default.conf 文件是一个好的开始——相信我,那里有很多内容。 对于我的系统,我仍然需要进行一些相当重要的更改。 看一下其中的一些行

   plugins             =   ButtonBar,Status,Socket,SSH,Telnet,Terminal
   Socket.port         =   22
   Terminal.localecho  =   false

我们将从 plugins 行开始。 每个插件都有自己的一组配置选项。 这些都在应用程序网站的 文档 部分中介绍。 Applet 通过加载各种插件来工作(其中许多插件都包含在您下载的 jar 文件中)。 您可能希望指定的一些内容包括终端窗口顶部的按钮栏、底部的状态行(指示连接状态)以及 SSH、终端和 Telnet 功能。 其中一些几乎必须存在,例如 Socket 和 Terminal。 一个实际处理套接字通信,而另一个为您提供终端仿真(默认为 vt320)。 如果您的配置文件基于您获取的 default.conf 文件,如果您希望使用加密通信,则需要添加 SSH 插件。

这里第二个感兴趣的行是 Socket.port,我已将其设置为 22,用于 SSH。 如果您想改为运行直连 Telnet,则这将是端口 23。 最后,在我的系统上,我必须将 Terminal.localecho 设置为“false”,因为我键入的所有内容都会出现两次。 我再次强调,您可以使用的配置选项很多。 检查默认配置文件并根据需要进行调整。 现在是测试您的安装的时候了

     http://yourserver/some_dir/SSHTest.html

如果一切正常,您应该会看到类似这样的内容

You Can Get There from Here, Part 2

接下来将是您的登录屏幕。 在此图像中,我正在运行 fortune 程序。

You Can Get There from Here, Part 2

老朋友卡尔。 人们想念他。

今天就到这里,各位——我的电子配额已大大超出。 现在,您可以从任何可以使用 Web 浏览器的地方 shell 访问您的系统。 如果除了 SSH 连接之外,您还通过启用 SSL 的 Apache 服务器运行它,您应该会感到更加安心,无论您身在何处,都可以访问您的系统和强大的命令行。

警告! 接下来是无端的自我推销:在撰写本文时,距离我的新书出版只有几天了。 Linux 系统管理:用户指南 (ISBN 0-201-71934-7, Addison Wesley) 将于 2001 年 9 月 14 日星期五发布。 如果您查看上面的链接,您甚至可以下载 免费 摘录。 我太激动了! 在我们下次在 系统管理员专栏 相聚之前,请记住,尽管您可能听说过什么,但条条大路通罗马。

正在查找本系列以前的文章? 单击此处获取列表。

电子邮件: mggagne@salmar.com

加载 Disqus 评论