级别: 初级

David Mertz,博士 (mertz@gnosis.cx), 程序员和作家, Gnosis Software,Inc.

2001 年 12 月 01 日

这两篇文章的第一篇中,David 比较和对照了“安全

shell(SSH)”和“虚拟网络计算(VNC)”,这两种技术允许用户在一台工作站上运行位于另一台计算机上的应用程序。(他没有涉及文件和打印共享

或诸如 httpd、ftpd、smtp 或 nntpd

之类的“因特网”服务,虽然这些技术也可以有效地“共享”上述计算机中的某些资源。)然而,他确实给出了 SSH 和 VNC

的安装和配置的提示,并评论了工具的稳定性、选项和许可证状况。

为有效地测试各种软件程序和撰写关于它们的文章,我在自己的本地网络上配备了大量计算机。这些机器运行各种操作系统并使用各种硬件配置。有时我会在各种平台上评测工具;而有时候会测试和调试自己编写的工具。

我网络上的大多数机器都以多重引导配置的方式安装了多种操作系统,但也有一些是“无头的”(无监视器或键盘)。虽然多重引导装入器适于容纳多种操作系统,

但由于只在一台机器上进行测试,重新引导的时间开销使得多平台的详细比较测试花费了更多时间。多重引导不太利于“并排”比较。我没有评测过任何让您在一个

系统内“虚拟”另一个系统的工具,譬如

VMWare、Plex86、VirtualPC、SheepShaver

或者其它工具。在某些方面,这些工具实现了我将在本文中讨论的那些工具的用途。

有几种不同的技术允许用户在一台工作站上运行位于另一台计算机上的应用程序。SSH

提供到远程计算机的文本终端;可以使用“X Window

系统”在一些工作站上显示交互式应用程序,而这些应用程序实际上运行在另一台工作站上;VNC

可以作为对于整个远程桌面的“远程控制”。每种技术都有优点和缺点。它们都在

Linux 上运行,但不同变体(主机或远程)允许与其它各种 OS

环境(用于异构网络)进行交互。使用这些工具的组合,我可以坐在一台工作站(具有最好的监视器、键盘和椅子的那一台)前,运行、测试并对多个平台上(通常不用重新引导任何系统)的应用程序进行计时。

我的本地网络上有七个节点,命名为

Apollo、Bacchus、Chaos、Delphi、Echo、Fury 和

Gaia。分别为这些节点分配了从 192.168.1.101 到 192.168.1.107 的 IP

地址。大多数情况下,同一物理机器在多重引导到不同操作系统时总是获得相同

IP 地址(但有时我使用 DHCP,它分配 192.168.1.200

以上的地址)。整个网络位于一个硬件防火墙/路由器后,我充分信任防火墙,对于运行在本地机器上的服务,我也许并没有象应有的那样过分猜疑。(需要在因特网上共享计算机的读者应该比我更担心安全性问题。这两篇文章中的第二部分加入一些关于安全性问题的讨论。)

我提及了上面的大部分细节,以便您可以遵循我在下面给出的一些 shell

示例。我实际操作的机器是 Bacchus,它的本地 IP 地址是

192.168.1.102。

最节省带宽的连接计算机方法是通过简单文本

shell。完成这个操作的非安全工具是

telnet 和

rsh ,但使用这些工具会引起很多安全性问题,因此最好在所有需要通信的计算机上安装

ssh 。尽管下面的一些示例在我的防火墙之内使用了

telnet ,但这种折衷办法也是以下事实的产物 ―

“Fury”目前专用于安装和重新安装测试操作系统。缺省情况下,许多类

UNIX 操作系统(包括最新的 Linux 分发版(distribution))将安装

ssh ;如果没有安装,请参阅本文后面的

参考资料来安装它。

安全

shell(

ssh )对通过特定通道的所有信息流都进行加密。因为使用了公钥(public-key)加密,所以,服务器和客户机不必在会话开始(initiation)之前共享密钥。此外,机密不会在通道中以未加密格式传输(譬如,使用

telnet

传输登录密码则任何拦截器都可以截获它)。其它协议 ― 例如 VNC 或 X

Window ― 可以位于

ssh

顶部,但是这些协议最简单的用途是用于创建远程文本控制台。

使用

ssh ,可以轻易地连接到与本地机器运行不同操作系统的机器上。唯一的要求是,远程机器运行

sshd 服务器,而本地机器要有

ssh

客户机。例如,要从运行 OS/2 Warp 的“Bacchus”机器连接到隔壁运行

Slackware Linux 的“Delphi”机器,就象下列清单一样简单:

使用 ssh 通过 HOSTS

名称连接到远程机器

C:"UTILS % ssh quilty@delphi

Last login: Thu Nov 29 01:41:36 2001 from 192.168.1.102

Linux 2.2.19.

quilty@delphi:~$ exit

logout

Connection to delphi closed.

如果我的

HOSTS 文件未定义别名,可以使用:

使用 ssh 通过 IP

连接到远程机器

C:"UTILS % ssh quilty@192.168.1.104

Last login: Thu Nov 29 01:51:31 2001 from 192.168.1.102

Linux 2.2.19.

quilty@delphi:~$

同样地,我经常通过使用下列命令跨越国界,在全世界管理我租用的 Web

服务器:

使用 ssh 通过 DNS

名称连接到远程机器

C:"UTILS % ssh gnosis@gnosis.cx

gnosis@gnosis.cx's password:

对于异构平台上的

ssh

来说,最困难的事情是正确地获得终端配置。实际上,这个问题并不是

ssh 本身的问题(

telnet

也有同类的问题)。将两台 Linux

机器连接在一起几乎总是能无缝地工作。但是将安装其它平台的机器作为客户机或服务器时,显示总是不太正确,或者键绑定不象预期的那样工作。当涉及“非类

UNIX”平台诸如 Win32、BeOS、MacOS 和 OS/2

时,问题似乎尤其严重,但即使将 FreeBSD 与 Linux 连接也有缺点。

当在异构机器之间创建

ssh

连接时最典型的问题是代码页错误,或者色彩转义码错误。当任何一种情况发生时,基本命令行可用,但是线条(line-draw)字符显示成其它东西;经常只能看到单色终端而不是彩色的。shell

命令不大受这种“阻抗失谐(impedance mismatch)”影响,但是交互式

curses 或

slang

类应用程序通常会受影响。这些应用程序中最值得注意的是文本编辑器,它通常是您最需要在远程控制台上运行的应用程序。顺便说一下,

jed 是一种特别好的远程文本方式编辑器;其强壮内核也许将使用

vim 。其它大多数 Linux/UNIX 编辑器不是基于 X

的就是极其粗糙的(或者是臃肿的,如

emacs )。

如果您遇到终端配置问题,就需要做几件事。如果您是在连接到类 UNIX

sshd 服务器时出问题,请尝试更改远程

TERM

环境变量。例如:

常用远程终端设置

quilty@delphi:~$ TERM=vt100

quilty@delphi:~$ TERM=ansi

quilty@delphi:~$ TERM=linux

同时,本地

ssh

客户机通常会有办法来配置连接的终端类型。它可能是命令行选项、环境变量或菜单对话框,这取决于平台和客户机程序。您在连接的两端不应该使用完全相同的名称。要反复进行试验。还应该检查以确保在客户机配置内使用了“无代码页转化”。要测试“阻抗匹配(impedance

match)”,则尝试运行一个全屏远程应用程序(例如

jed

或者另一个编辑器)。

VNC 是一种已经移植到许多 GUI 平台上的客户机/服务器系统。VNC

提供一种在本地系统上显示远程计算机整个“桌面”的轻量型协议。Symantec

pcAnywhere 是一种具有类似用途的商业产品,但是它仅限于

Microsoft 操作系统。相反,VNC

才真正可以在许多不同的操作系统上运行,并有多种实现和变体。

获得对 VNC 的感性认识的一个好方法是看它网站上的抓屏(请参阅

参考资料)。可能的组合比那里显示的多得多,但是显示的多个变体表明了多数。通常,

任何具有 VNC 客户机(通常称为

vncviewer )的平台可以在本地窗口内显示任何具有 VNC

服务器(

vncviewer )的平台的虚拟桌面。调整大小和全屏选项也许可用,这取决于

VNC 客户机的版本。

VNC 服务器的基于 X

的版本(

Xvnc )和用于其它平台的版本之间有一点差异。单用户系统诸如

Windows、MacOS、BeOS 和 OS/2 不具备“X Window

系统”所拥有的“桌面会话”概念。因此,例如 Windows VNC

服务器所显示的只是出现在与本地系统上的同一个 Windows

桌面的远程版本;当连接时这称为“桌面:0”。相反,X Window

是多用户和多会话的。每个

Xvnc

会话创建一个全新的桌面,可能有它自己的分辨率、窗口管理器和状态。换言之,X

对 VNC 的支持要好得多。

一旦安装了 VNC 服务器,启动会话很简单而且安装也很容易;请参阅

参考资料。对于单用户平台,由于基本上只运行应用程序,所以没有选项(第一次您将需要设置一些许可权)。在

X 下,一些命令行选项会有帮助。例如,我已经连接了一个从本地 OS/2

Warp“Bacchus”机器到 Mandrake Linux“Fury”机器的

telnet 会话,如下所示:

在 Fury 上启动 VNC 服务器会话

[root@fury quilty]# cat /usr/bin/vnc-sessions

vncserver -name TinyLinux -depth 8 -geometry 640x480

vncserver -name BigLinux -depth 32 -geometry 1260x940

[root@fury quilty]# vnc-sessions

New 'TinyLinux' desktop is fury.gnosis.lan:1

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/fury.gnosis.lan:1.log

New 'BigLinux' desktop is fury.gnosis.lan:2

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/fury.gnosis.lan:2.log

现在,我可以从客户端使用本地

vncviewer 连接到

Fury:1 或者

Fury:2 (或者同时连接两者)。如果愿意,也可以显式地指定

192.168.1.106:1 。

相同的的原则也适用于非本地网络,并且出于安全性目的,VNC

可以配置成隧道通过 SSH。

大多数情况下,具有一个到远程计算机的

vncviewer

连接,在功能上和坐在该远程计算机的本地监视器和键盘前面一样(假定它不是“无头的”)。从美学角度来看,将通过一个使用本地机器的小窗口

(widget)的窗口来构造远程系统的桌面(除非使用全屏选项)。最初这些额外的框架可能会分散一些注意力,但是使用了一段时间后,就很容易忽略它们

了。

选择适当的会话图形分辨率和色深很重要(假定您正在使用

Xvnc 服务器,就会有一个选项;或者在其它

vncserver

平台上,您希望将远程计算机的本地显示设定为适合自己的 VNC

需要的分辨率)。远程桌面分辨率越小,使用的色彩越少,则显示响应就越快。这样,屏幕资源对于许多应用程序来说是理想的。我发现减少色深对响应速度的影响比较小;VNC

的十六进制编码比简单的“象素到象素”屏幕传输的效率高得多。但是屏幕大小出现了明显差异。

通常,我发现使用诸如 1260x940 以上的远程图形分辨率和本地

1280x1024 视频设置配合的非常好。我只留了一点额外空间以放置 VNC

标题栏和本地桌面任务栏。但是

vncviewer

窗口依然占用着

几乎整个屏幕,这很漂亮。在 100 Mbit

以太网连接的情况下,这种连接几乎丝毫不逊于本地显示。在 10 Mbit

以太网上,当移动和缩放窗口时,可以看到轻微的延迟。在速度更慢的情况下,VNC

往往不是远程操作的最佳解决方案。电缆、DSL 或者 T1

连接仍然可用,但不是无缝的。任何比这些连接更慢的连接实际上只能用于紧急情况。

VNC

连接的一个问题是本地桌面出于自己的用途需要使用一些击键。许多远程击键可能必须使用组合击键操作来模仿,这取决于特定客户机。例如,我的本地

OS/2

vncviewer 需要按

Alt-A, F, Alt-A

来输入远程

Alt-F 。这些额外的敲击有时对于打字员来说难以适应。在非

PC 平台(例如

Mac)下情况更为复杂,因为它们有自己的键盘和(单键)鼠标。还有很多东西要学习和输入,但是通常会有一个方法来模仿所有远程输入动作。但是,Linux

到 Linux

连接工作得十分平稳。通常只有少数组合键没有直接传递到远程会话,这取决于连接两端所用的特定窗口管理器。

一个值得注目的 VNC 实现是 Java

版。有许多本机版本可用,即使那些没有本机

vncviewer

的平台也可以使用 Java 版(假定存在用于该平台的 JVM)。VNC-java

可以在 Web 浏览器内运行,Web 浏览器提供了建立连接的常见界面。但是

Java 查看器也可以作为 Java 应用程序在浏览器外部运行。下面的

参考资料提供了一些关于 VNC-java

的额外信息,包括我创建的一个压缩文档,它也许有助于一些用户开始学习。

在第 2 部分中,我们将研究远程 X

和其它跨网络运行远程应用程序的方法,还有使用远程应用程序时的安全性问题。

SSH 参考资料

您可以参阅本文在 developerWorks 全球站点上的

英文原文.

商业和正式版本的

SSH

是由 SSH Communications Security

推出的。有一个可以免费用于非商业用途的版本,但它不是“自由软件”。

大多数 Linux 分发版封装的却是

OpenSSH。因为许可证是从各种地方继承的,所以它有一点复杂,但却是“类

BSD”的。

对于 Windows,我建议使用“自由(MIT 许可证)软件”程序

PuTTY。它很棒并且安装也容易。

对于 BeOS 和 OS/2,我建议在

BeBits.com和

Hobbes OS/2 archive

上分别搜索。对于 MacOS,我使用过

MacSSH,但是关于

Nifty

Telnet 1.1 SSH,我无法提出意见。请在

FreeSSH 网站上查看关于 MacOS

的链接。

VNC 参考资料

有些读者可能希望使用 VNCviewer 的 Java

版本,但是在他们的机器上只有 Java 运行时环境,而没有

javac 开发工具。David Mertz

已经创建了(完全未受支持)一套已编译的字节码

.jar

.class 文件,欢迎您尝试。

其它参考资料

David Mertz 还在 developerWorks

上发表过关于加密概念的由三部分组成的教程,该教程提供了本文中讨论

ssh 时提及的“公钥加密”的背景知识:

David Mertz

是个讨人喜欢的人。他是计算机问题的克星。可以通过

mertz@gnosis.cx 和 David

联系;可在

http://gnosis.cx/publish/

上了解他的生活。欢迎提出关于本专栏过去、现在和将来的意见和建议。

linux 网络部分,在 Linux(或异构)网络上共享计算机,第 1 部分相关推荐

  1. linux 连接两个异构网,如何在Linux(或异构)网络上共享计算机?

    在有关共享计算机的这两篇文章中的第 1 部分中,我描述了我的异构本地网络以及如何使用它来比较和测试不同操作系统和体系结构上的应用程序.有几种技术使一台工作站上的用户可以运行位于另一台工作站上的应用程序 ...

  2. linux系统怎么共享网络,在Linux操作系统的网络上共享计算机

    比较"安全 shell(SSH)"和"虚拟网络计算(VNC)" 在这两篇文章的第一篇中,David 比较和对照了"安全 shell(SSH)" ...

  3. linux 异构 计算_在Linux(或异构)网络上共享计算机,第1部分

    linux 异构 计算 为了有效地测试和编写各种软件程序,我在本地网络上保留了相当多的计算机. 这些机器运行各种操作系统,并使用各种硬件配置. 有时我正在评估各种平台上的工具: 其他时候我正在测试和调 ...

  4. 得到本机或者网络上共享打印机的状态和打印任务

    //得到本机或者网络上共享打印机的状态和打印任务 //author:ginsonic //zdcnow download from E-E use winspool; function Printer ...

  5. 网络上的计算机之间又是如何交换信息的。(TCP/IP协议、IPX/SPX协议、NetBEUI协议)

    TCP/IP协议.IPX/SPX协议.NetBEUI协议 网络上的计算机之间又是如何交换信息的呢?就像我们说话用某种语言一样,在网络上的各台计算机之间也有一种语言,这就是网络协议,不同的计算机之间必须 ...

  6. 将书籍扫描做成电子版在网络上共享,这算不算侵权?

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 将书籍扫描做成 ...

  7. 使用Webrtc和React Js在网络上共享跨平台的点对点文件

    正文字数:3764  阅读时长:9分钟 我们希望实现一个零思想的文件传输机制,即在两个设备或个人之间共享文件,不需要考虑如何.在哪里.为什么和什么. 文 / Dev 原文链接:https://medi ...

  8. 文件共享服务器imac,iMac怎么在网络上共享设备windows文件夹和服务 | MOS86

    本章通过向您展示如何在网络和Mac和Windows计算机之间共享文件,文件夹和设备,帮助您充分利用您的iMac网络连接. →使用Macs共享文件和文件夹使用AirDrop和文件共享 →与Windows ...

  9. windows7无法登陆网络上的计算机,Win7本地连接连不上怎么办 win7电脑本地连接连不上网如何解决...

    我们win7系统电脑中要正常上网的时候都会通过本地连接来连接网络然后进行上网,可是有时候会碰到无法上网的问题,检查一下发现本地连接连不上网,导致无法上网,而导致本地连接连不上的原因有很多,现在以win ...

最新文章

  1. VTK:模型之Delaunay3DDemo
  2. 基本算法--冒泡排序
  3. python字符串title函数_python字符串内建函数-capitalize、title、upper
  4. 实现一个正则表达式引擎in Python(三)
  5. gcc/g++编译器的优化
  6. 免费wordpress主题在线生成网站
  7. ======第五章设备管理======
  8. 【Python数据分析】数据挖掘建模——分类与预测——人工神经网络
  9. Harmony OS — TabList和Tab分页栏
  10. [渝粤教育] 中国地质大学 工程地质 复习题 (2)
  11. 两用物项许可证办理流程_[进出口管制类]两用物项和技术进口许可证之易制毒化学品(6)欣海丁丁检务工作室(272)...
  12. mysql关于用户的知识_关于mysql的基础知识
  13. 70+优秀的前端工具
  14. Qt6 tesseract-ocr 截图识字
  15. SSL 1653 数字游戏
  16. 华电研究生学习和工作总结(2021.11.08-2021.11.12)-围城
  17. 计算机组成原理速成课程【速成】
  18. 使用scrapy爬取图片
  19. [kubernetes]-Pod无法通过 Service IP 访问自身
  20. 2020大疆校招B卷第三题

热门文章

  1. 《曾国藩传》第一卷京官时代-读后感
  2. es analyzer分词
  3. ArcMap或ArcScene恢复初始化界面设置---彻底解决各种窗口隐藏问题
  4. bzoj3864-hdu4899-Hero meet devil
  5. 使用 Word 2013 维护博客
  6. 站群目前来说依然在站长圈非常的流行
  7. 用酒精Alcohol 120%刻WI-IC的OS简单教程
  8. Three.js多细节层次LOD
  9. 移动web前端开发总结
  10. 计算机无法播放视频,电脑播放器无法播放视频怎么处理