用 Cygwin 在 Microsoft Windows 中创建类 Linux

来源:developerWorks 中国 作者:伞 云飞
  
随着信息技术的发展,应用软件复杂度的提高,单一的操作系统平台已经不能满足软件开发和测试的需要,通常受到一些软件运行环境的制约,一个应用解决方案当中会包含多个服务器,而且服务器具有不同的操作系统。这样,不同操作系统之间的互通通常是一个困扰软件开发和测试的难题,本文介绍了如何利用开源的 Cygwin 软件在 Microsoft Windows 中创建类 Linux 开发环境从而可以与 Linux 或 Unix 服务器实现互通,以方便应用软件的开发和测试。

Cygwin 简介

软件开发中的问题

在当今的应用软件开发中,一个应用系统通常包含多个服务器,这些服务器的操作系统大致分为以下两类:一类是 Microsoft Windows 操作系统,一类是类 Linux 操作系统 ( 包括各种 Unix 操作系统和 Linux 操作系统 ) 。在 Windows 操作系统当中,可以通过 putty 等软件访问 Unix 操作系统的服务器,但是从类 Linux 操作系统的服务器上访问 Windows 服务器确是困扰软件开发和测试的难题,Linux 操作系统之间的互通可以通过包含远程访问命令的 shell 脚本进行,这样如果能在 Windows 环境中创建一个可以运行 shell 脚本的类 Linux 环境就可以实现 Windows 操作系统和 Linux 类操作系统之间的互通。

本文就介绍了一种用开源软件 Cygwin 来创造这个环境,并实现与类 Linux 操作系统进行无密码的互通。

Cygwin 简介

Cygwin 是一种在 Windows 环境中创造类 Linux 环境的开源软件,它包含以下两部分:

  • 一个包含了 Linux 基本功能 API 的 DDL 文件(Cygwin.dll)。可以支持用户在安装了 Cygwin 的 Windows 环境中运行 Linux 类的脚本文件和命令 ( 如:ls, time, mkdir 等 ) 。
  • 一些在 Linux 环境下可以使用的工具 , 可以让用户感觉就在 Linux 系统中操作一样方便。

Cygwin 可以支持除 Windows CE 之外的任何 Windows 版本,但是它不是一个直接的 Linux 的内核接口,所有的应用程序都需要在 Cygwin 创建出来的类 Linux 环境中重新编译之后才可以运行。

如何用 Cygwin 解决软件开发中平台互通的问题

在 Windows 操作系统中安装 Cygwin 软件,并安装 SSHD 服务器,打开 SSHD 服务并在 Linux 服务器上配置与这个 Windows 操作系统中运行的 Cygwin 环境的无密码访问之后,就可以运行包含远服务器访问命令的 Shell 脚本从而实现 Linux 和 Windows 平台之间的互通,包括文件的传输,远程 shell 脚本的调用等。





Cygwin 在 Windows 平台下的安装

由于 Cygwin 是开源软件,因此可以从 Cygwin 的官网上下载各个版本的安装,访问http://www.cygwin.com/便可下载 Cygwin 的安装文件。该安装文件可以在除 Windows CE 的任何 32 位或 64 位的 Windows 操作系统中运行。

1) 双击下载文件中的 Cygwin.exe 运行 Cygwin 的安装程序,出现图 1 的安装界面之后,直接点“下一步”。


图 1. Cygwin 安装启动界面
Cygwin安装启动界面

2)” Cygwin ”提供了三个安装选项,从网络安装,仅下载以及从本地安装,

从网络安装是指直接从 internet 上下载并立即安装,安装成功之后下载的安装文件并不会被删除,而是被保留以便下次安装。

仅下载是指将安装文件下载到本地但是暂时不安装。

从本地安装是指不下载安装文件,直接从本地目录中选取安装文件进行安装。

由于笔者已经下载过安装文件,所以这里选择“从本地安装”,点击下一步 .


图 2. 选择安装方式
选择安装方式

3)设置 Cygwin 的安装路径,其他的选项都设置为默认值 , 然后选择下一步。


图 3. 选择安装路径
选择安装路径

4)接下来指定本地 Cygwin 安装文件的目录,Cygwin 相关的安装文件必须存在于这个目录下才能继续安装。设置好之后,点击下一步。


图 4. 选择安装文件路径
选择安装文件路径

5)Cygwin 首先会检测安装配置文件,检测工作完成以后会直接跳入下一步。


图 5. 检测安装配置文件
检测安装配置文件

6)接下来,选择需要安装的组件,Cygwin 提供了不同的视图可以从不同的角度展现需要安装的组件。位于窗口顶部那些“ Keep ”、“ Prev ”、“ Curr ”、“ Exp ”等选项,只是用来改变当前组件树结构的显示方式的,对组件的安装没有什么影响。

组件的安装方式共有这么几类:
(1)Default:这是默认选择,表示只下载 / 安装该包的缺省安装项(可点击包左边的+号展开,看看缺省安装究竟是些什么内容)。(2)Install:表示要下载 / 安装该包的全部内容。所要求的空间也最大。(3)Reinstall:表示重新下载 / 安装该包的内容(以上一次正常下载 / 安装时所选择的内容为准,由于 Cygwin 无法卸载,因此如果需要重新安装 Cygwin 时,这个选项将非常有用,可以避免用户进行第二次的组件选择)。(4)Uninstall:卸载相应的组件的选择项。 用户可根据自己的实际需要,确定究竟安装哪些内容。推荐选择“ Install ”方式,虽然安装过程会比较长,而且所占空间会比较大,但是会将所有包中所含的组件进行安装,以免使用中发现某些类 Linux 的功能组件无法使用。

选择所有默认的组件,由于我们需要使用 cygwin 的 SSHD 服务,因此,至少需要将 Admin 目录下的 cygrunsrv 组件 以及 Net 目录下的 opensshd 组件选中。


图 6. 选择安装组件
选择安装组件

8)选择需要安装的组件以后,直接点击“下一步”,安装进度条界面将显示出来提示安装进度

9)当安装达到 100% 的时候,会自动跳转到下一页面,提示是否需要建立快捷方式。点击“完成”后结束 Cygwin 的安装。


图 7. Cygwin 安装进度及状态
Cygwin安装进度及状态

图 8. Cygwin 安装完成
Cygwin安装进度及状态

Cygwin 没有提供卸载功能,但是可以被反复安装,因此如果安装过程中出现错误可以重复以上的安装操作,直至安装成功。

安装成功以后,会在桌面上生成一个 Cygwin 的快捷方式,双击该快捷方式即可启动 Cygwin 创造的 Linux 环境,可以看到:经过几个简单的初始化步骤以后,一个类似于 Linux 命令行的界面就出现了。基本的 Linux 命令都可以使用。


图 9. Cygwin 类 Linux 界面
Cygwin类Linux界面




装有 Cygwin 的 Windows 平台与类 Linux 平台的互通

在本文的第二部分,已经在 Windows 平台上成功的安装了 Cygwin 软件,此时就可以在这个环境当中运行 Linux 命令或脚本,但是到目前为止还不能实现与其他 Linux 平台之间的互通。这一部分就介绍如何利用 SSHD 服务来实现平台之间的互通。

配置 SSHD 服务

在运行配置之前,首先需要执行以下的操作,打开 Cygwin 提供的类 Linux 命令窗口。为 /etc/passwd 和 /etc/group 两个文件添加读的权限。

命令 1:chmod +r /etc/password

命令 2:chmod +r /etc/group

为 /var 目录添加 d..x..x..[xt] 访问权限。

命令 3:chmod 755 /var

运行 ssh-host-config 的配置脚本对 SSHD 服务进行配置,在配置过程中注意下面的配置选项:

  • Should privilege separation be used 提示是否要为服务创建新的权限,OpenSSH3.3 之后的 SSHD 服务器版本,默认是需要为其创建独立的权限,此处填 yes 之后输入回车键进入下一个选项。
  • Do you want to install sshd as service 提示是否需要创建 SSHD 服务并注册为 Windows 服务,此处填 yes 之后输入回车进入下一个选项。
  • Do you want to use a different 提示是否需要使用其他的账户管理 SSHD 服务,如果选择” no ”的话,会指定一个默认的用户作为管理 SSHD 服务的账号。当然,用户也可以为 SSHD 服务建立一个新的账号,然后输入需要建立的用户名,在本例中选择新建一个账号,输入 sshadm 作为用户名。
  • Create a new privileged user account: sshadmin 提示是否为用户指定新的权限,推荐使用“ yes ”选项。这时要注意,如果选择“ yes ”的话,在配置 SSHD 服务的时候会使用独立的账号权限,所以要注意在配置 SSHD 服务的过程中,一定不要使用需要在进行无密码访问过程中,用来登陆系统的用户来实现 SSHD 服务的控制。否则,进行 SSH 访问的时候,只会读取该用户作为系统用户的权限,而不会读取它作为 SSHD 服务的权限,这样会导致访问 SSHD 服务失败。
  • 随后提示输入该用户名的密码。

创建一个新的用户以后,需要在 cydwin 的命令环境中通过 su 命令检验用户的密码是否指定成功,如果密码设置不正确,SSHD 服务启动过程会失败,这就需要在特权账号下使用 passwd 命令修改其密码。

下图是 SSHD 服务配置过程的截图:


图 10. 配置 SSHD 服务
配置SSHD服务

完成配置过程后,就将 SSHD 服务添加到了 cygwin 的服务中,可以通过运行 cygrunsrv 命令查看,启动或停止该服务。

查看 cygwin 中服务的命令:cygrunsrv – L

启动 SSHD 服务的命令:cygrunsrv – S sshd

停止 SSHD 服务的命令:cygrunsrv – E sshd

如果配置后发现配置过程中存在问题,还可以删除 SSHD 服务,然后重新进行配置过程。删除 SSHD 服务的命令:cygrunsrv – R sshd

另外,由于 SSHD 已经被加入到 windows 服务管理器中,因此,可以直接在在 windows 注册服务管理中,启动和停止 SSHD 服务。

无密码访问的配置

配置无密码访问的主要原理是将访问机器上需要进行无密码访问的账号的密钥,添加到被访问机器的系统用户中,从而使被访问机信任来自访问机的请求。


时间:2009-07-16 16:55 来源:developerWorks 中国 作者:伞 云飞 原文链接

好文,顶一下
(8)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量