开发者社区


C++/C | Java | .Net/Windows | Linux/Unix | 开源 | 其他
首页 - 编程
编程
全文搜索:   

使用OpenSSH 建立更有效的安全性能
作者: Builder
2006-08-31 10:28:58



老Linux管理员们都知道SSH(安全shell协议),这是他们软件工具箱中最便利最有用的工具。在工作站X Windows环境下使用多端竞争或者通过Screen utility,Linux服务器管理员或者其它基于Unix操作系统的服务器管理员,能轻松地同时管理几个系统。网络管理shell或者Perl脚本,能利用SSH在多个服务器上简单安全地自动执行工作。

网络shell效应RSH比SSh要长。但是SSH在其功能中添加了强大的加密功能和数据压缩功能,并且大多数现代SSH实现在同一包内提供SFTP和SCP,它们用于网络中的安全文件传输。

最流行最普遍的SSH实现以OpenSSH的形式出现,它是由OpenBSD社团构思和维护的项目。OpenSSH被导入每一个操作系统平台,包括微软的Windows,虽然在Window环境中它最广泛的应用是:做为基于Unix系统上的OpenSSH服务器的客户端。这些基于Unix系统包括:Linux、Solaris和OpenBSD。

SSH的职责

SSH使用强大的加密功能保护远程会议不被怀有恶意的黑客攻击。从始至终都提供端到端的安全保障,包括客户机与主机进行联系,以及在电脑之间传输用户名和口令之前建立会议专用的密码键交换。它可以使用多种不同的密码方案:AES、3DES、Blowfish以及其它方案。受信任的主机鉴定方案和系统之间键值交换提高安全性,OpenSSH不需要安全证书或优先键交换即可创建安全加密的远程会议。

另外,使用SSH可以解决某些类型的网络拥塞,明显加速网络,因为它在传输数据前先对数据进行了压缩。它通过SFTP加密,能提供类似于FTP的交互式文件传输能力,所以,甚至口令和用户名在网络上传输都没有阻碍。对于文件传输操作,SCP也类似地提供安全而方便的途径完成此项工作——加密的文件拷贝命令,此命令操作网络连接,它是SSH实现的一部份。

SSH是加密交流中众所周知的网络协议。开发它是为了取代RSH效用,RSH也加了密,但是不够安全。SSH不仅继承了RSH的功能,而且扩展加强了其功能,特别是安全性方面。

LinuxOpenSSH

Linux上安装OpenSSH是很容易的。例如,在Debian GNU/Linux系统上,安装OpenSSH时,做为根用户登录,然后输入命令apt-get install ssh即可。类似地,在Fedora Core Linux系统上,安装OpenSSH时,做为根用户登录,然后输入命令yum install ssh即可。你甚至不需要做这些事情,因为在Debian 和Fedora Core中,它们默认安装配置中已经包含了OpenSSH。对于Linux系统来说,如果要确定系统是是否已经安装了OoenSSH,只需要输入命令:ssh。如果系统中安装了OpenSSH,则会给出简单的使用指南信息(Listing A):

Listing A
$ ssh
usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D port] [-e escape_char] [-F configfile]
[-iidentity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[user@]hostname [command]

在OpenSSH说明书上有更完整的使用信息。这个说明书是传统UNIX文件手册系统的一部分,并且在命令行模式下输入man ssh命令,即可访问OpenSSH说明书。说明书提供了OpenSSH客户端命令行选项的信息,关联的配置文件信息、当前版本已知的Bug信息,影响其操作的shell环境变量信息,以及相关说明列表。正如列表所示,上面有sshd的说明书ssh-agent的说明书,以及OpenSSH工具集里其他应用的说明书。 

配置并使用Linux 客户端

在OpenSSH客户端上,从命令行访问OpenSSH服务器上的其他系统时,仅仅只需要输入ssh host命令,这里“host”是目标系统的主机名。有时候这个主机名不能被解析成IP地址,因为你没有那个系统的DNS,并且它没有在本地系统的/etc/hosts文件中列出来。此时有必要指定目标系统的IP地址而不是主机名,例如:输入ssh 192.168.0.1命令,连接此IP表示的系统。更多的SSH命令如下:

SSH一般使用端口22。如果SSH服务器侦听一个不标准端口,使用下面命令,示例端口号为1234:

ssh -p 1234 host

除非指定了用户名,否则它将试图登录到一个远程系统,此时用户名与本地系统上的用户名相同。可以使用命令选项指定不同的用户名。下面给出了一般格式,“user”表示用户名。

ssh -l user host

一个更普遍的指定用户名的方法是使用下面的格式:

ssh user@host

通过SSH而不需要打开shell界面即可以在目标系统上执行命令。下面例子中的“command”表示想要执行的命令:

ssh host command

可以在目标系统上指定当前工作路径。在下面的示例中,指定了/home/user为当前工作路径:

ssh host:/home/user

可以将上面的多个选项组合到一块,形成更复杂的定制操作:

ssh -p 1234 user@host:/home/user
ssh -l user host command

OpenSSH配置文件位于路径/etc/ssh下。OpenSSH客户端主要的配置文件在/etc/ssh/ssh_config路径下,大多数版本都包含足够的解释信息,告诉你怎么使用配置文件。对于有广泛而复杂的说明书系统的版本,例如Debian,可以使用man ssh_config命令,获得足够多的OpenSSH客户端配置信息。

对于安全性而言,一个普遍而重要的配置选项是ForwardX11,它应该被设置成“NO”,从而阻止SSH客户端向网络自动发送X Windows系统信息,甚至在通过SSH连接而没有使用X Windows时,也是一样。使用这个设置,可以指定特定的SSH连接,通过使用- X命令选项,传送X Windows系统信息。在etc/ssh/ssh_config文件中其它配置选项也能执行和服从安全政策,并且可以服务于特殊的安全需要。

【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号