ssh&scp

ssh&scp

第4章Secure Shell客户端—ssh和scp

本章内容如下:

? 工作机理

? 螺母与螺栓

? 使用方法

? 文件

你可能已明白服务器是如何工作的了,现在你还需要了解客户端的工作原理。正如你所见,绝大部分的通讯,包括认证和加密,是由服务器来处理的。

4.1 工作机理

如果你已经读过第3章关于Secure Shell 1守护进程的工作原理,可能会记得我们曾用驾车通过的顾客与出纳员来和Secure Shell做类比。现在让我们回到这个比喻,Secure Shell守护进程就是出纳员,Secure Shell客户就是驾驶员,已建立的连接通道就是管道,而在两者之间传输的数据就是那个塑料罐中的现金。

Secure Shell客户端管理加密类型、连接类型(交互或命令行方式)、在需要的时候进行的压缩及在本地与远程服务器之间传输的信息并将其转发出去。转发包括T C P/I P传送及X 11流量。对用户而言,客户端就是用户所看到的诸如S S H之类的程序,对系统管理员来说,它定义了用户使用的认证文件、口令、主机名及用户名。

Secure Shell的客户端为用户提供了一个界面,它是大部分用户在谈论Secure Shell时所熟悉的那一类界面。对许多用户来说,它看上去像远程登录,如t e l n e t,r s h或r l o g i n,甚至有点像远程拷贝如r c p.

涉及连接的主要部分是由Secure Shell守护进程端来处理的,第3章已经详细描述了这个过程。客户端为用户提供了一个界面和一套允许用户登录、发送至远程主机的命令或安全地拷贝文件。客户端也在需要连接时向远程主机发送连接请求。

另外,客户端初始化与服务器的连接并在接收到用户命令时切断连接。客户端也能通过口令或. r h o s t s为用户提供认证。用户用来进行远程登录的公共密钥存放在用户的主目录下。

Secure Shell 1使用两个客户端:s s h和s c p。s s h客户端允许客户安全地远程登录和处理远程服务器传来的命令,s c p客户端允许在网络上进行安全远程文件拷贝。还有一个s l o g i n,通常它仅仅是s s h的别名。

4.2 螺母与螺栓

在任何来自客户端的连接建立之前,Secure Shell守护进程需要创建一个服务器密钥和一个主机密钥。初始化过程由客户端(包括s s h和s c p)来进行。服务器监听特定的端口,通常情况下该端口是2 2,然后等待连接。客户端通常从端口1 023或端口号更高的端口建立连接。

使用Secure Shell客户端的基本语法为:

ssh&scp

$ssh [command]

在没有命令行参数时,Secure Shell 客户端进入交互模式。反之,Secure Shell 客户端执行在远程服务器上的命令,如果这个命令存在的话。你也可以键入如下的命令。

$ s s h

这将使你进入使用默认配置文件的交互模式。你也能像P O P 、N N T P 和X 那样转发T C P /I P 流量。这部分内容将在第9章“Secure Shell 能做的其他事情”中加以描述。

4.2.1 连接

客户端并不一定要与远程服务器相连,它也可以通过T C P /I P 套接字与本机上的服务器相连。其他类型的套接字也可被用于Secure Shell ,但不能实时地完成。关于T C P /I P 连接的过程,请参见图4 -1。

图4-1 TCP 连接过程

注意请注意不要直接通过Secure Shell 连接到r o o t 。可以以普通用户的身份使用S e c u r e Shell ,然后通过su 命令登录到root 。你也可以设置为不允许直接登录root 。

在服务器守护进程建立到套接字的连接后,由客户端来处理用户与远程主机之间的交互。如果在远程的服务器上没有与之相匹配的S S H守护进程,S S H 客户端将返回r s h 或r c p 。(远程服务器将不会接受Secure Shell 连接,而端口2 2也将被防火墙堵住)。因为Secure Shell 总是连接8比特的,它将不连接该通路,除非通过r l o g i n 来限定( r l o g i n 用-8来限定8比特连接,而不是7比特)。然而如果你想保持安全连接,也可能不希望返回到r l o g i n 或r s h 。

客户端连接的基本步骤如下:

1)准备连接。

2)读取用户及系统配置文件。

3)验证用户账号(通过R S A 密钥、口令、. r h o s t s 或前几者的组合)。

4)F o r k s 进程(如果在后台运行)。

5)根据连接方式在t t y 或标准输出上运行。

6) 关闭连接。

客户端

服务器端服务器端

服务器端

客户端客户端含SYN 标志的数

据包序列A SYN ,序列B +

ACK, (A +1)ACK ,(B +1)

ssh&scp

4.2.2 连接建立前

在运行与远程主机的连接之前,Secure Shell客户端需要完成几项工作。其中之一是设立默认的0 22屏蔽权限,这使得文件仅能由所有者更改,其他用户只能阅读。因为这个模式并没有被显性地设置,上述操作提供了一套基本的文件读写权限。

接下来,Secure Shell客户端读取配置文件。被读取的第一个配置文件是位于$ H O M E/.s s h 目录下的用户配置文件。如果用户没有指定文件名,Secure Shell客户端将寻找系统级的配置文件,该文件存放在:

/ e t c/s s h_c o n f i n g中。

如果这个文件也不存在,客户端将设置默认的参数,例如用户名,它被默认为在本地运行Secure Shell客户端的用户。主机名与用户名的最大长度被限定为2 55个字符。

在面向远程主机的连接打开之后,Secure Shell客户端仅在进行r h o s t认证时需要用r o o t权根。而它确实是以r o o t的身份进行工作的,但S U I D并没有给S C P,尽管这是进行. r h o s t认证所必需的。如下所示:

如果你的Secure Shell 客户端设置文件允许的话,在连接失败时,Secure Shell客户端将会试着运行r s h.。如果连接成功,会载入主机的私有密钥以进行R S A验证。通常情况下这项工作是在Secure Shell客户端不再以r o o t的身份工作之前完成的,因为主机的私有密钥只能由超级用户读取。

4.2.3 连接进行时

当连接成功地完成后,如果在本地不存在子目录$ H O M E/.s s h,将创建该目录。与用户有关的几个文件,包括用户的私有与公共认证文件( R S A密钥对),已知的主机及针对该用户的随机s e e d文件也将同时被创建。当密钥对成功地在主机与用户账户之间进行交换后,将建立连接。图4 -2显示了在与远程服务器的交互及非交互连接中,客户端的工作过程。

如果是交互连接,连接将建立在一个终端上。同样,如果允许压缩编码,在密钥成功地交换后,该功能便处于激活状态。连接完成后,主机的私有密钥将从内存中清除以防止它长时间存在从而引起核心堆积。

终端被定位后,Secure Shell客户端将创建信息包并将终端T E R M信息存于其中。与在命令行一样,字符串的长度并未受到限制,受到限制的是数据包的长度。信息包中也包含了终端的窗口大小及终端模式。然后,这些信息被发送往远程服务器并等待服务器的应答。

为了在远程主机上执行一条命令,终端信息必须加以指定。例如,准备使用s s h来执行一个命令,需要在命令行的最后指定它。如果准备使用一个终端,系统将会分配一个终端设备以便能以交互的方式执行远程命令。由于命令都是实时地执行,它们不会被存放于缓存区中。

如果你的确提供了一个命令,Secure Shell客户端会假定跟在主机名后的任何东西都是一

ssh&scp

个命令,并将其存放于缓存区内。它们没有长度的限制,因为命令本身是不会有长度限制的,但发送的包会有长度限制以防止缓冲区溢出。

当客户端正在发送输出结果时,系统并没有相应的记录。相反,所有的输出结果直接被发送至本地主机的终端上。这包括s c p 的状态行及Secure Shell 客户端的活动终端(包括非交互及交互终端)。

图4-2 交互及非交互连接

4.2.4 断开连接

要么是因为命令已经完成,要么是已从非交互会话中退出,当用户决定终止会话序列时,必须断开连接。客户端必须接受到一个表明退出的信号。当会话终止后,与远程服务器的连接被毁坏,在客户端退出之前,必须返回一个状态信息。

4.2.5 安全拷贝—scp

Secure Shell 客户端另外一个良好的功能是允许你通过S S H 进行远程拷贝。s c p 使用与s s h 客户端同样的端口号。必须指出,s c p 客户端是伯克利服务r c p 的一个改进版本,它使用s s h 来传输数据。因为r c p 使用r c m d 来执行远程指令,因而显得不那么安全。使用s s h 能允许s c p 使用与s s h 同样的安全机制复制文件:R S A 认证、对称的加密密钥及反欺骗机制。图4 -3显示了s c p 是如何利用s s h 建立连接的。

图4-3 使用ssh 传输的安全拷贝

使用s c p 的语法比s s h 稍微复杂一点。它的使用形式如下:

$ scp user@source:/directory/file user@destination:/directory/file

非交互连接

客户端客户端发送结果,终止连接发送命令经过加密的会话客户端

交互连接

服务器端

服务器端

服务器端

客户端

ssh 运输rcp

客户端发送scp 命令

(执行rcp )远程主机

ssh&scp

在本章的稍后部分,我们将回顾s c p的语法。

与s s h客户不同,s c p并不以S U I D的身份运行。这是因为它使用s s h来对连接进行管理,而s s h已经以S U I D的身份来工作了。在连接建立之前,s c p先建立它的功能特性,这些特性包括:详尽性、统计、压缩、批处理,口令类型及非私有端口。详尽性是指s c p所能描述的信息范围;统计功能则用于在状态行上显示下载进度;压缩功能是用来增进性能的;而批处理模式则决定是否出现输入口令的提示信息;非私有端口指那些大于 1 023的端口,它们能被用来为s c p服务;口令类型是在连接时的对称压缩类型。

在连接完成之前,s c p创建一个套接字对来与s s h通讯。当连接完成后,密钥对将被交换,同时在远程系统上执行远程拷贝命令。当远程拷贝命令执行完毕而用户尚未离机时,程序将在其关毕之前返回一个值,若指令成功完成,该值为零或正数,反之则为负数。

4.3 Secure Shell客户端的使用

现在你对Secure Shell客户端如何工作有了一定的理解,了解程序的选项也同样十分重要。选项包括:代理、口令、转义符、如何在客户端后台运行、详尽性、端口和端口转发及压缩。本节将描述s s h和s c p客户端的使用。

4.3.1 ssh的使用

s s h和s c p都使用不同的语法来使Secure Shell客户端适应不同的选项。Secure Shell客户端选项比s c p要多一些,这是因为它比s c p具有更多的功能。作为s c p的传输工具,s s h还必须为s c p提供一些功能。

对所有的工作,s s h都有如下统一而简单的语法:

$ ssh [options] hostname [command]

1. 命令行选项

可以用S S H在命令行上进行设置。这些选项必须在主机名的前面一一列出。它们包括:使认证代理无效,选口令,压缩数据,使用指定的转义键,指定文件的位置、端口转发,使用详尽性级别及将S S H设置成后台进程。

- a利用这个选项,可以使转发的认证代理无效。其结果是使已装入内存的口令无效。如果愿意,你也可以针对每台主机指定这个选项,而不是使其成为全程的设置。

-c cipher可以通过这个选项为你的网上传输指定一个用来加密数据的密钥对。这个选项对认证没有影响,后者是使用R S A公共密钥来进行加密的。可供选择的口令为I D E A、D E S、3 D E S及B l o w f i s h,也可以选n o n e,但这将使加密无效从而导致Secure Shell客户端不再安全。选项n o n e仅能用于调试和测试,在实际应用中不应使用。A r c f o u r有一个与S S H相关的安全弱点,所以也不要使用它。最好的选择是:3 D E S、I D E A或B l o w f i s h。B l o w f i s h是S S H1中最快的算法。从安全性考虑,可选I D E A。如果Secure Shell服务器不支持I D E A,可使用3 D E S,3 D E S最诱人的地方还在于它与D E S向后兼容。

- C该选项将使s s h压缩所有通过Secure Shell客户端发送的数据,包括输入、输出、错误消息及转发数据。它使用g z i p算法,压缩级别可通过设置配制文件中的选项C o m p r e s s i c n L e v e l 来指定。这对于缓慢的传输线路,例如m o d e m,是特别有用的。但对于传输速度已经很快的网络则显得没有必要。同样,你可以利用配制文件针对每台主机配置这个选项。

ssh&scp

-e escape_character这个选项定义转义字符。默认值为“~”,但可以设成其他的任何字符或控制字符。也可以将其定义成“n o n e”,这将使会话变得透明,但当连接被挂起时,你可能希望保留它成为默认设置。可以通过键入其后为句号的转义字符关闭连接。如果你在键入转义字符后敲入c o n t r o l+Z,连接将被挂起。

- f该选项将s s h连接送入后台执行。这在验证已经完成且T C P/I P转发已经建立的情况下会生效。这对在远程主机上启动X程序显得十分重要。其后用户将被提示要求输入口令(提供的认证代理不运行),然后将连接送往后台。

- g该选项允许远程主机通过端口转发与主机端口相连,通常情况下仅允许本地主机这样做。

-i identity-file这个选项定义R S A的私有密钥或用来读入验证的识别文件。默认的文件为$ HOME/.ssh/identity。你可以针对不同的主机定义相应的文件。如果定义了不同的文件,你可能希望针对机名为它们命名(例如:i d e n t i t y. t h i s h o s t、i d e n t i t y. t h a t h o s t)。

- k这个选项使K e r b e r o s票证转发功能无效。这是又一个你可能希望通过配置文件为每台主机量身定做的选项,因为有一些主机要用K e r b e r o s,而另外一些则不会使用。

-l login_name这个选项指定你在远程主机上的登录用户名。默认情况下该用户名与你在本地机上的用户名相同。它可以通过配置文件为不同的主机量体裁衣。这个选项是一个很实用的选项,因为许多人在不同的主机上有着不同的用户名。

-L port:host:hostport这个选项转发在本地主机上的指定端口与远程主机上的指定端口连接完成的信息。套接字会监听本地主机上的端口,一旦有针对该端口的连接(例如:端口11 0P O P),该连接将被转发到安全通道,并建立与远程主机的连接也将在该机上指定端口。端口转发也能通过配置文件为每台主机设置相应值。对具有持权的端口,只有超级用户才能转发它们。

- n这个选项与- f选项类似。然而,在需要敲入口令时它将不会工作。标准输入由

/ d e v/n u l l重定向而得到,当Secure Shell客户端被送往后台时必须使用它。这个选项在用来发送X流量至远程主机时被普遍地使用。最好在使用该选项时启用认证代理。

-o option在命令行选项未被定义时,该选项用来从配置文件中传递选项。这包括

S t r i c t H o s t k e y C h e c k i n g和U s e R s h,它们没有自己的命令行选项。在本章的稍后部分将会涉及到这些选项。这个选项有着与配置文件中的选项相同的格式。

-p port可以指定哪个端口用作Secure Shell客户端与服务器的连接。默认值为2 2,它为Secure Shell而保留。记住,除非特殊指定,用于服务器的端口号在/ e t c/s e r v i c e s文件中定义。可以通过配置文件针对不同的主机而分别设置。

-P 使用大于1 023的端口号(非特权的端口)。不能使用这些端口进行r h o s t认证。(无论是它自身还是与R S A的组合)。

- q这个选项选用哑模式。这意味着任何信息,包括警告与诊断信息都不会被显示出来。在你碰到认证或连接问题时,最好关闭该模式。

-R port:host:hostport该选项转发远程主机指定端口到本地主机指定端口上的连接。它和- L选项的工作过程刚好相反。套接字监听远程主机上的端口,只要针对该端口有一个连接,它将被转发到本地主机和主机端口。该转发端口可以在不同的主机上通过配置文件来进行不同的配置。特权端口只能在以超级账号登录到远程主机时转发。

ssh&scp

- t该选项通过指定一个伪终端迫使Secure Shell客户端以交互模式工作,即使在给定命令的情况下也是如此。它被用于执行在远地主机上的基于屏幕的程序。

- V该选项打印出客户端的版本号后退出。

- v详尽模式。该选项使s s h打印出调试信息,在调试连接、认证及配置问题时该选项特别有用。

- x该选项用于X流量转发,X被公认为在启动时是不安全的,对安全敏感的站点最好设置这个选项。该选项可以通过配置文件为每一台主机分别设置。

2. 一些例子

在默认的情况下,并不设置这些选项。Secure Shell客户端的默认设置是运行于前台并在终端上启动(如果没有命令传递过来的话)。同样,在默认情况下流量没有被压缩。在压缩数据时,这过程使流量变慢并且c p u的时钟周期只会被浪费,你不可能得到任何带宽增加。X流量会自动地被转发,但如果这样会导致错误发生的话,也可以将其关闭。

可以使用下面的命令以通过Secure Shell登录到远程主机:

可以使用s l o g i n(s s h的一个硬连接):

现在,假定你想以不同的用户名进行登录,例如,在本地主机我的用户名为 a n n e,而在远程主机上我的用户名为a h c,为了以a h c登录至远程主机,必须使用如下命令:

在使用了m o d e m线并希望以同样的账号登录到本地系统上时,需要打开压缩机制,如果此时希望使用I D E A密码,可以键入下列命令:

如果你想登录至远程主机并以后台方式返回过程,可以用很简单的方式实现这个目的。通常情况下在和X程序进行连接或运行s h e l l脚本程序时会需要这种方式。记住,这需要进行认证提示。你也可能希望关闭转义符,可以通过键入以下的命令来实现。

如果你想将输入重定向至/ d e v/n u l l并且用后台方式运行远程程序,必须使用- f选项的关联选项- n。这种方式不需要提示输入口令,确信你是用. s h o s t s或认证代理来实现这一点的。你或许还想关闭转义字符,这时键入下面的命令。

如果你想用端口2 2的外的端口连接来远程服务器,比如非标准端口,使用- p选项即可实现:$ ssh -p 2022 http://www.360docs.net/doc/info-b206af9951e79b8968022675.html

4.3.2 SCP的使用

正如在本章前面所述,s c p的语法要比s s h稍微复杂一点。看上去像下列命令:

$ scp user@sourse:/directory/file user@destination:/directory/file

s c p的好处在于可以将文件拷贝到远程主机或本地主机。所以,取决于你所要发送的文件的位置(要么在远程主机,要么在本地),你必须指定用户名、主机名、目录和文件。听上去这有点复杂并且需要记住许多东西。但只要正确地使用了这些参数就会得到正确的结果。比如

ssh&scp

说我会经常使用s c p在家中L i n u x主机上与I S P上的账号之间进行文件拷贝。

1. 命令行选项

如果需要同时处理显示内容,设置口令,定义识别文件,保存文件的属性,设置端口,激活压缩级别,设置批处理模式并且为s s h定义选项( s c p使用s s h来传输数据),这些选项将使你能够建立你所希望的s s h功能。

- a为每个文件打开显示功能。设计信息将显示拷贝每个文件的进程。如果你希望全程地打开这个功能,可以使用-Q选项。

- A该选项关闭针对每个文件的设计信息显示功能。如果在程序脚本中使用s c p,你可以使用- q选项完全关闭这个功能。

- B批处理模式。该模式防止对口令的输入而使你能在程序脚本中使用s c p。

-c cipher这是一个与s s h相同的选项,因为它被直接传递给s s h。可以通过这个选项为你的网上传输指定一个用来加密数据的密钥对。这个选项对验证没有影响,后者使用R S A公共密钥进行加密。可供选择的口令为I D E A、D E S、3 D E S、B l o w f i s h和A r c f o u r。也可以选n o n e,但这将使加密功能失效从而导致Secure Shell客户端不再安全。参数值n o n e仅能用于调试与测试,在实际应用中不应使用。D E S T和A r c f o n r是众所周知的解析密码,所以尽量不要使用它们。最好的选择是:3 D E S、I D E A或B l o w f i s h。B l o w f i s h是S S H1中最快速的算法。基于安全的考虑,可以使用I D E A。如果I D E A未被Secure Shell服务器所支持,可以使用3 D E S。

- C这是一个与s s h相同的选项,因为它被直接传递给s s h。它压缩所有通过Secure Shell客户端发送的数据,包括输入、输出、错误信息及转发传输的数据。它使用g z i p算法,而压缩级别则可以通过设置配置文件中的选项C o m p r e s s i o n L e v e l来指定。这对于缓慢的传输线路,例如m o d e m线是特别有用的,但对传输速度已经很快的网络则显得没有必要。同样利用配置文件,可以为每台主机配置这个选项。

-i identity_file这个选项也和在s s h被定义的同名选项一样,其选项值将被直接传递到s s h。它定义R S A的私有密钥或用于读入认证的识别文件。默认的选项文件为$ HOME/.ssh/idenity。你可以为不同的主机定义相应的配置文件。如果定义了不同的文件,你可能希望针对主机名为它们命令(例如:i d e n t i t y. t h i s h o s t、i d e n t i t y. t h a t h o s t)。

- L该选项使用大于1 023的端口,即那些非特权端口。你不能将它用于r h o s t s认证(不管是r h o s t自身还是与R A S的组合)。然而,它对那些通过无配置文件的防火墙连接是十分有帮助的。该选项与s s h的- p选项一致。也可以在配置文件中写上Use PriledgePort=no或在命令行中加上“-o UsePriviledgePort=no”来实现该选项的功能。至于为什么要用“- L”,似乎并没有逻辑上的理由,也许作者已经用完了字符而不得不随便挑选一个这样的字符。

-o ssh_option该选项的指定值将被直接传递给s s h。因为s s h是s c p的传输载体且能传递给s c p的选项是十分有限的,该选项使用户可以给s c p指定更多的选项。这些选项已经在本章前面部分“s s h的使用部分”描述过了。

- p保存源主机上的文件属性。属性包括:修改时间、读写时间及初始文件的模式。该选项直接从r c p而来,在你希望备份文件且需要确保文件完整性时它是十分有效的。

-P port可以指定客户端在哪个端口上与服务器相连接。默认值为端口 2 2,它为S e c u r e S h e l l所保留。记住,除非特殊指定,会在文件/ e t c/s e r v i c e s中为服务器指定该端口。也可以为

每台主机分别配置,但与s s h稍有不同,这是因为r c p使用- p来保存文件的属性。

- q该选项关闭统计信息显示功能,它并不针对单个文件,而是为所有的文件服务。同样,该选项在s h e l l脚本程序中十分有用。如果你想针对单个文件打开该功能,可以使用- A选项。

- Q该选项打开统计信息显示功能。与- q类似,它也不针对单个文件。针对单个文件打开该功能时,使用- a选项。

-r 搜索完整的目录并拷贝该目录下的所有文件。

-S path_to_ssh该选项指定能找到s s h的路径。在将s s h安装在非标准目录下时该选项十分有用。

- v详尽模式。该模式使s s h和s c p显示进程的调度信息。在调试连接、认证和配置所出现的问题时,该选项很有用处。

注意可以通过定义一个文件或全程配置来打开或关闭设计信息显示选项。记住-a与

-Q、-A与-q彼此相似,而不是-a与-q、-A与-Q。注意不要混淆大小写选项。

2. 一些例子

在默认的情况下,这些选项并没有被设置,s c p的默认设置是在前台运行并显示统计信息。同样,它也没有被加以压缩,因为这将使流量的传输速度变慢并且浪费c p u的时钟周期。在默认情况下,没有设置批处理模式并使用了端口2 2,我们假定本地主机上的账号为a n n e而和远程主机上则是a h c。

可以通过以下命令将本地主机上的文件拷贝到远程主机:

从远程主机上将文件拷贝到本地机上的当前目录可以使用相同的命令,但有一点不同:如果你想查看统计信息,可以键入以下命令:

如果你已经启动认证代理并希望以批处理模式使用s c p:

当备份一个We b站点时,你可以拷贝整个目录结构,并希望压缩数据以通过m o d e m传输,可以通过下列命令实现:

4.3.3 配置Secure Shell客户端

Secure Shell有一个配置文件可以用来默认定义选项。该配置文件为s s h和s c p客户端设置选项。有些选项只能通过命令行设置,除此之外是不可定义的。但你可以通过配置文件来设

ssh&scp

置它们。和大多数配置文件与s h e l l脚本程序一样,空行与以“”开头的行不会被读入。Secure Shell的默认配置文件是/ e t c/s s h_c o n f i g,它同时为s s h与s c p客户端设置选项。

用户可以在$HOME/.ssh/config 文件中有他们自己的特殊设置,该文件与/ e t c/s s h_c o n f i g 有同样的格式。配置选项的优先级别如下:

1)命令行选项。

2)用户的配置文件。

ssh&scp

3)系统级的配置文件。

下面所述的选项是可以在s s h_c o n f i g文件中为Secure Shell配置的选项。在/ e t c/s s h_c o n f i g 中定义这些选项的格式如下:

O p t i o n T ype Argument

如果有多个参数,可以用空格将它们分隔开来。该格式适用于下面所述的一切选项。

1. 主机名选项

可以通过一些配置选项定义一些能影响远程主机的选项,这些选项都能应用于I P地址与主机名,利用通配符可以过滤完整的域名或一段地址。

Host 这个选项定义哪一个主机接受配置文件中的选项配置。可以使用通配符(‘*’匹配多个字符,‘’匹配单个字符)。这和命令行中给定的h o s t n a m e一致。

使用方法:

Host tigerlair. c o m

H o s t N a m e该选项和/ e t c/h o s t s文件类似。它能为真实的主机定义别名。既可以使用I P地址也可以使用主机名来设置该选项。

使用方法:

HostName tigerlair. c o m

S t r i c t H o s t K e y C h e c k i n g该选项用于配置客户端以决定是否自动地将主机键增加到$ H O M E/.s s h/k n o w n_h o s t s文件还是通过提示实现。如果频繁地连接到不同的主机(例如:你使用一个s h e l l账号并且由I S P动态地为你分配I P地址),将不是一个好的办法,并且可能引起异常情况发生。如果你将Secure Shell安装成工作于生成的环境,在该环境下主机不应改变,你可能要将其设成n o。选项值为n o、y e s和a s k。ask 选项在你希望增加一个主机到你的

K n o w n_h o s t s文件时会作出相应的提示。但现在你必须人工地通过安全介质载入主机的公共密钥。

使用方法:

StrictHostKeyChecking ask

2. 认证

Secure Shell提供了不同的认证手段:口令、r h o s t s、R S A密钥和T I S认证机制。既可以单独地使用上述任意一种方法,也可以使用它们的组合从而通过Secure Shell进入账号。记住, r h o s t s认证是非常脆弱的,而与R S A密钥组合则使你的认证变得十分有效。

B a t c h M o d e该模式打开后将关闭口令输入提示。当你在脚本程序中使用Secure Shell、运行c r o n或处理批处理会话时该模式是十分有效的。记住,用认证代理来代替r h o s t s对模式的运行是极为必要的。默认值是n o,可选值为y e s与n o。

使用方法:

BatchMode no

N u m b e r O f P a s s w o r d P r o m p t s该选项指定关闭前的口令提示总数。它必须是一个小于5的整数。服务器对登录次数施加了总数为5的限制,客户必须更为严格地控制这个数目,这能有效地防止有人在远程主机上运行客户端,或多次登录主机从而获得破译口令的可能性。默认值为1。

使用方法:

NumberOfPasswordPrompts 3

ssh&scp

P a s s w o r d A u t h e n t i c a t i o n通过定义你是否可以决定要用口令来通过Secure Shell进入账户。默认值是Ye s,口令所做的工作是保护R S A密钥,而不是通常意义上的账户自身。你可能会选择关闭口令认证,但让它保持工作可能会更好一点,毕竟它提供了又一种认证的方式。这和Secure Shell守护进程的P a s s w o r d A u t h e n t i c a t i o n是十分类似的。

使用方法:

PasswordAuthentication yes

P a s s w o r d P r o m p t H o s t该选项决定是否在口令提示中包含远程主机名。它仅对用户所看到的显示发生影响,而不是实际运行的程序。

使用方法:

PasswordPromptHost yes

P a s s w o r d P r o m p t L o g i n该选项决定是否在口令提示中包含远程的用户名。它仅能影响用户所看到的显示,而对实际运行的程序并无影响。

使用方法:

PasswordPromptLogin yes

R h o s t s A u t h e n i c a t i o n该选项设置基于. r h o s t s或/ e t c/h o s t s.e q u i v的认证。它并不需要密码或R S A密钥,而是将你的系统对众所周知的伯克利服务攻击开放。默认值是n o,最好按这种方式工作。如果你确实需要使用R h o s t s认证,最好将它和R h o s t s R S A A u t h e n t i c a t i o n中的R S A认证结合起来使用,这和Secure Shell服务器守护进程的设置选项R h o s t s A u t h e n t i c a t i o n是十分类似的。但它所发生作用的范围却不像服务器端的配置那么大。

使用方法:

RhostsAuthentication no

R h o s t s R S A A u t h e n t i c a t i o n该选项设置基于. r h o s t s或/ e t c/h o s t s.e q u i v的R S A认证。它并不需要口令,但要求服务器端提供用于认证的R S A密钥。它使系统对伯克利服务攻击开放,但对R S A密钥的需求使危险降到最小。如果你使选项保持在y e s,你可能想为主机设置更为严格的登录要求。同样,如果你想工作于更为安全的环境,必须关闭任何一种类型的r h o s t s认证。这和Secure Shell服务器守护进程的设置选项R h o s t s R S A A u t h e n t i c a t i o n是十分类似的。

使用方法:

RhostsRSAAuthentication no

R S A A u t h e n t i c a t i o n可以使用无数种认证类型,当然也可以仅使用单独的一种认证方式。如果想将R S A认证定义成惟一可以接受的认证方式,你完全可以做到这一点。这种方法不需要r h o s t s口令或辅助式的认证。选项的默认值是y e s且这是一种被推荐的方式。它与安全客户端的配置选项R S A A u t h e n t i c a t i o n是十分类似的。

使用方法:

RSAAuthentication yes

T I S A u t h e n t i c a t i o n Secure Shell也支持交替的认证机制,例如T I S认证服务器a u t h s r v。如果将Secure Shell配置成可支持T I S的方式,必须将该选项设为y e s(默认值是n o)。这和S e c u r e S h e l l守护进程的选项T I S A u t h e n t i c a t i o n是类似的。

使用方法:

TISAuthentication no

3. Kerberos选项

ssh&scp

K e r b e r o s是一个第三方的基于“票据”进行认证的U N I X认证系统。要想使K e r b e r o s能正常工作,使用它的应用程序必需作出相应的配置。然而,Secure Shell可以自己识别K e r b e r o s 支持而不需要作出相应的配置。

K e r b e r o s A u t h e n t i c a t i o n该选项定义是否支持K e r b e r o s票据并用其进行认证,或者允许口令在通过kerberos KDC域D C E安全服务器后仍然有效。默认值为y e s,但如果你没有与其相一致的环境时,可以将其关闭。它和Secure Shell服务器守护进程的选项K e r b e r o s A u t h e n t i c a t i o n相似。

使用方法:

KerberosAuthentication no

K e r b e r o s T g t P a s s i n g如果想使K e r b e r o s票据能被转发到服务器,可以打开这个选项。选项默认值为y e s,只有在你打开了K e r b e r o s票据的情况下该选项才是重要的。这和S e c u r e S h e l l服务器守护进程的选项K e r b e r o s T g t P a s s i n g是类似的。

使用方法:

KerberosTgtpassing no

4. 客户端选项

这些选项针对安全客户端全部的功能。通常的设置包括远程机上的用户名、连接尝试、代理命令(如果使用)、加密口令、转发、转义符和r s h的使用。

C i p h e r该选项允许选择连接用的口令。你可以使用I

D

E A、3 D E S、B l o w f i s h、D E S和

A r c f o u r,也可以选择n o n e,但除非你已在调试,否则不要这样做。最好的选择要么是I D E A,

3 D E S,要么是B l o w f i s h。因为并非所有的服务器都支持I D E A,如果你选了I D E A但它未被系统支持,3 D E S将自动地替换掉它。

使用方法:

Cipher IDEA

C l e a r A l l F o r w a r d i n g s在接受了所有的命令行选项和用户及系统端的配置文件所定义的选项后,该选项将清除所有的转发(包括X 11 )。这在进行多连接时是十分有用的。s c p客户端默认设置了这个选项,因而即使在配置文件中定义了一些转发,它也不会失效。

使用方法:

C l e a r A l l F o r w a r d i n g s y e s

C o n n e c t i o n A t t e m p t s此处可以指定Secure Shell客户在退出之前(或返回到r s h)尝试向远程服务端连接的最大次数。如果你有一些不太稳定的连接,最好将它设成一个较低的数值(确定使用的是整数)。

使用方法:

ConnectionAlttempts 3

E s c a p e C h a r该选项定义转义符。默认值为波浪号( ~)。这和命令行传递过来的- e选项十分类似。选项参数必须是一个单字符或者一个单字符与加字符(^)表明一个控制字符,或者是n o n e使转义符无效(这将使连接透明)。

使用方法:

Escapechar z^

F a l l B a c k T o R s h可以通过定义使Secure Shell客户端在连接失败时(通常是因为远程或本地没有运行中的守护进程),它将会努力通过r s h与主程客户相连。在运行r s h之前。你会得到

一个会话未加密的警告,这些警告如下所示:使用方法:F o r w a r d A g e n t 在设置该选项后,将转发连接到远程主机上的验证代理。这在你没有使用口令且想使用Secure Shell 时是十分有用的。使用方法:

K e e p A l i v e Secure Shell 守护进程能根据设置确定是否发送活动保持消息。活动保持消息能让远程服务器知道连接是否已经断开。结果是删除仍然活动的进程。然而如果路由只是暂时的离线,会出现这些令人沮丧的消息:

这当然令人头疼!但是如果你不想发送活动保持消息,你可能会挂起那些消耗服务器资源的幽灵一般的会话。选项的默认值是y e s ,这意味着服务器发送活动保持消息。如果你想使活动保持消息无效,你只能同时使服务器与客户端的配置无效。记住,如果你将它们关闭,可能会留下被挂起的进程。这和Secure Shell 守护进程的配置k e e p A l i v e 是类似的。

使用方法:

P r o x y C o m m a n d 该选项确定用哪一个命令来与P r o x y 服务器相连接。这个命令只能出现在行尾并用/ b i n /s h 执行。相应地,可以用% h 和% p 来代替主机和端口。在命令中的某一点,连接必须发往运行S S H 守护进程(s s h d - i )的i n e t d 超级守护进程或调用在某些主机上运行的s s h d 。记住,S O C K S 支持能在安装时被编译,这已在第2章“Secure Shell 在U N I X 上的安装”介绍过了。

使用方法:

U s e r

该选项允许指定在远程主机的登录用户名。如果你经常以与本地账号不一样的用户名登录到远程主机,该选项将是十分有用的。通过这种方式你不必每次都在命令行加上- L 选项。

使用方法:

U s e R s h 这个选项确定这个主机是否使用r s h 。如果主机不支持s s h 协议,r s h 或r l o g i n 将会自动地执行。指定本选项以后,将忽略其他选项。所以,除了r s h 固有的安全命令,你可能并不需要使用这个选项。

使用方法:

5. 文件位置

这些选项定义Secure Shell 客户文件的存放位置。这些文件包括用户的识别文件和对系统第4章开Secure Shell 客户端下载

ssh&scp

与用户透明的主机文件。

G l o b a l K n o w n H o s t s F i l e该选项定义系统已知的主机文件位置,默认值为/etc /ssh _ k n o w n_h o s t s。

使用方法:

I d e n t i t y F i l e该选项指定用户的R S A私人密钥的存放位置。默认值为$ H O M E/.s s h/i d e n t i t y。可以定义能被认证代理识别的其他识别文件,也可以为每台主机定义相应的识别文件。你可以使用波浪号( ~)代替$ H O M E来表示用户的主目录。

使用方法:

U s e r K n o w n H o s t F i l e该选项指定针对特定用户的k n o w n_h o s t s文件。选项的默认值是$ H O M E/.s s h/k n o w n_h o s t s。与I d e n t i t y F i l e选项类似,可以使用波浪号(~)来代替$ H O M E,它表示用户的主目录。

使用方法:

6. X11连接

下列选项为X 11传输服务的,它们只针对X转发,而不是T C P流量或X a u t h程序的位置。

F o r w a r d X11该选项定义X转发包是否自动地送往Secure Shell通道且确定D I S P L A Y环境变量从何处获得设置。和其他的T C P流量一样,这些选项会被用户所定义的转发所覆盖,这取决于你是否允许X流量通过。然而,如果你想让X进行远程传输,最好将其转发到S e c u r e S h e l l。这和Secure Shell守护进程的X 11 F o r w a r d i n g选项类似。

使用方法:

F o r w a r d X11 yes

X 11 A u t h L o c a t i o n这和Secure Shell守护进程的X A u t h L o c a t i o n选项类似。该选项定义用于X认证的X a u t h程序的位置。该选项没有默认值,如果在配置时没有出发现x a u t h或X代码,就必须设置该选项。

使用方法:

XllAuthLocation /usr/local/Xll/bin

7. 压缩选项

压缩是用来减少最终打入数据包的数据总量。包的大小是一个核心设置M T U,典型情况下为1 700字节。如果你已在使用一个诸如m o d e m的慢速连接或通过慢速网络传输像X那样的大应用程序,你可能需要打开压缩。你不仅可以决定是否打开压缩,还可以决定压缩级别。

C o m p r e s s i o n该选项决定你是否使用压缩。它与g z i p应用程序使用的压缩算法是一样的。你可以选择y e s或n o。记住,如果你处在一个快速的网上时,完全可以不必打开压缩选项,因为压缩本身反而会使速度变慢。

使用方法:

Compression yes

C o m p r e s s i o n L e v e l可以利用该选项来指定你所需要的压缩。在使用这个选项之前,必须选打开选项C o m p r e s s i o n,压缩的最高级别为9,最低为1。默认值为6,对大多数诸如m o d e m线的慢速连接来说,这个数值是较为合适的。当然,如果你想将X流量通过M o d e m线

ssh&scp

传输,可能需要将该选项设为8或9。

使用方法:

CompressionLevel 9

8. 端口选项

利用Secure Shell,你可以对端口做许多事情。这包括为本地或远程的转发定义端口号,及Secure Shell客户端的连接端口,并决定是否利用特权端口。

G a t e w a y P o r t s该选项可以决定一个远程主机是否可以连接到一个本地的转发端口。通常情况下,只允许本地的主机这样做。该选项与- g命令行选项类似。

使用方法:

GatewayPorts no

L o c a l F o r w a r d该选项将任何连接到本地主机指定端口的连接转发到远程主机上的主机端口。这允许套接字监听本地主机上的端口,只要一有到该端口的连接被建立(例如P O P的端口11 0),该连接将转发到安全通道然后建立到远程主机端口的连接。对于特权端口,只有超级用户才能转发它们。该选项和s s h客户的- L选项类似。

使用方法:

LocalForward 1025:remotehost:11 0

p o r t可以指定Secure Shell客户端连接到的端口号。默认值为2 2,然而当端口2 2被应用后你也可能希望定义其他的端口号。该选项和- p选项类似,也和Secure Shell守护进程的配置文件中的选项P o r t类似。

使用方法:

Port 2022

R e m o t e F o r w a r d该选项将来自远程主机特定端口的连接转发到本地主机上的主机端口。它和- L选项的工作原理刚好相反。该选项工作时,将有套接字监听远程主机上的端口,一旦该端口发生一个连接,该连接将被转发到本地主机和主端口。对那些特权端口来说,只有以

r o o t的身份登录到本地主机,才能转发到这些端口。它和s s h客户的- R选项类似。

使用方法:

RemoteForward 11 0:r e m o t e h o s t:1025

U s e P r i v i l e g e d P o r t该选项使用那些大于1 023的非专用端口。你不能将这个选项用于r h o s t s认证(无论是它本身还是与R S A的组合)。然而,对于一些通过没有配置文件的防火墙的连接来说,该选项十分有用。它和- p选项类似。

使用方法:

UsePrivilegedPort yes

9. 客户配置文件的样本

现在你已经知道这些选项是干什么用的了,下列文件是一个Secure Shell守护进程的配置文件s s h d_c o n f i g,这个文件仅用来使选项的使用清楚一点。你可以用你喜欢的方式设置你的选项。

4.3.4 其他的

ssh&scp

Secure Shell 客户端配置文件

除了Secure Shell 客户端系统和用户配置文件以外,还有一些其他的文件能够影响S e c u r e S h e l l 客户的行为。配置文件存放于/ e t c 目录下从而成为系统端的配置,或者位于$ H O M E /.s s h 用于单个的设置。

1. /etc 目录

下面所列出的文件位于/ e t c 目录下,它们不是s s h 的配置文件,但对s s h 的行为有很重要的影响。这些文件包括:/ e t c /s h o s t s .e q u i v 和/ e t c /s s h r c 文件及/ e t c /s s h _k n o w n _h o s t s 文件。

/ e t c / s h o s t s . e q u i v 它们是仅为Secure Shell 所信任的主机。如果使用了. r h o s t s 和/ e t c /h o s t s .e q u i v ,伯克利服务与Secure Shell 都将会信任这些主机。该文件的用户端口等效文件为. s h o s t s ,它存放于用户的主目录下。如果安装了Secure Shell 环境,你可能会希望使用s h o s t s .e q u i v 和. s h o s t s 文件。

/ e t c /s s h r c 该文件和/ e t c /l o g i n 文件有相同的功能。在用户登录完成后而用户s h e l l 尚未启动时,由该选项设置全程的登录时间初始化动作。可以针对每一台主机设置相应的变量。该文件仅能被超级用户执行“写”操作。不需要为每个人改变登录和初始化过程。

/ e t c /s s h _k n o w n _h o s t s

该文件包含一个用于本地主机的已知主机密钥列表。它只能由系统管理员来管理,且只能包含局域网或为系统管理员所信任的主机的密钥。这个文件也只能包含下列格式的公有密钥。

public key hostname bits-per-modulus public exponent comments 64开始第二部分开Secure Shell 1

ssh&scp

其中c o m m e n t s是可选的。如果对于同一台主机有不同的主机名,必须为每个主机名进行相应的设置。

2. ~/.ssh目录

下面列出的文件都有存放于~ /.s s h目录且不是客户端的配置文件( ~/.s s h/c o n f i g是针对用户的)。~ /.s s h目录下包含下列文件:e n v i r o n m e n t、k n o w n_h o s t s、r a n d o m_s e e d、i d e n t i t y、i d e n t i t y. p u b、a u t h o r i z e d_k e y s和r c文件。

$ H O M E/.s s h/a u t h o r i z e d_k e y s该文件包含针对远程站点的本机登录的R S A公共密钥,这些密钥用来进行R S A认证。该文件只能被其拥有者所读写。文件格式和~ /.s s h/i d e n t i t y. p u b 文件类似。

$ H O M E/.s s h/c o n f i g这是个用户配置文件,已经在本章的前一部分加以描述。

$ H O M E/.s s h/i d e n t i t y这是用户的R S A私有密钥。和~ /.s s h/r a n d o m_s e e d类似,用户不应当修改文件及文件的权限。Secure Shell客户通过这个文件来识别用户,因此建议用户在产生密钥时指定一个口令。口令用于I D E A口令加密数据。该文件无法被用户读取。

$ HOME/.ssh/identity .pub这是用户的R S A公有密钥。和~ /.s s h/i d e n t i t y文件不一样,该文件能被用户读取。且看上去有点像P G P公有密钥。必须在你希望登录的每一台远程主机建立该文件,其方式是在~ /.s s h/a u t h o r i z e d_k e y s文件中增加一个记录。对Secure Shell来说,这个文件并不是必须的,然而使用该文件将使用户感到更安全。

$ H O M E/.s s h/k n o w n_h o s t s这个文件记录用户所登录过的每一台主机的公共主机密钥,包括那些没有被/ e t c/s s h_k n o w n_h o s t s文件所包含的主机。

$ HOME/.ssh/random_seed这个文件用来寻找随机数字生成器。它针对用户但用户不应该以任何方式修改该文件包括文件的权限。它用公共密钥交换的用户文件,对用户来说是不可读的。

$ HOME/.ssh/rc这个文件设置用户的登录初始化。初始化过程发生于用户已经登录进账号但用户s h e l l尚未被启动时。变量能针对每台主机分别设置。该文件应当只能被用户本人所读取。

4.3.5 环境变量

即使在学会了如何使用能够影响Secure Shell客户行为的全部文件,学习如何设置环境变量也是很有必要的。这些变量由Secure Shell设置,因为它们直接影响Secure Shell的行为,用户不应该自己配置这些变量。你可以设置其他的变量,但这与操作系统不同。例如:下面的信息既可以从/ e t c/e n v i r o n m e n t也可以从$ H O M E/.s s h/e n v i r o n m e n t读取。

D I S P L A Y这个变量设置X服务器的位置。通常用户在没有使用Secure Shell时会设置这个变量。然而,由于Secure Shell是根据认证方式来设置这个变量的,因此不需要人工地设置这个变量。设置D I S P L A Y的格式如下:

D I S P L A Y =h o s t n a m e:n u m b e r

此处n u m b e r是一个非负数。“O”通常用于本地主机。

L O G N A M E或U S E R这个变量设置用户名。

M A I L设置用户邮件箱所在目录。一般为$ H O M E/i n b o x。

PAT H设置用户的默认路径,如在/ e t c/e n v i r o m e n t中定义。设置可能会被用户s h e l l初始化

ssh&scp

文件如~ /.c s h r c或~ /.p r o f i l e所覆盖。

S S H_A U T H_S O C K如果配置S O C K S,这个变量将指定U N I X主域套接字的路径用来与认证代理通话。

S S H_C L I E N T定义客户端所在的位置,变量包括客户端的I P地址、客户端口号及服务器的端口号。其格式如下:

111.2 2.3.44 1025 22

S S H_O R I G I N A L_C O M M A N D如果你使用Secure Shell客户端远程执行一条命令,这个变量用来设置用户发送的原始命令行。

S S H_T T Y设置到t t y设备的路径,它与流行的s h e l l相关。如果这里不是t t y(例如,S e c u r e S h e l l未设置为交互模式),该变量将不被设置。

4.4 小结

Secure Shell服务器客户端s s h和s c p是Secure Shell的主要界面。Secure Shell既能用于交互模式(如r l o g i n)也能用于命令行方式(如r s h)。服务方用R S A密钥进行认证,用户则用R S A公共密钥c r y p t o g r a p h y进行认证。用户也能用口令或其他的机制(例如S e c u r I D卡)进行认证。在认证发生前,待处理的会话用对称密钥进行加密。这些对称密钥为:I D E A、3 D E S、D E S、B l o w f i s h或A r c f o u r。

Secure Shell客户端通过端口2 2与服务方相连接,该端口是众所周知的Secure Shell端口。在连接建立之前,它读取命令行,用户配置文件或系统端的配置文件传送的设置。连接建立以后,还必须确定对称密钥算法,然后Secure Shell客户会压缩数据包。压缩动作发生在口令在网上传送之前。如果需要执行一条命令,该命令将会存放于缓冲区中直到连接建立。如果处理会话是交互式的,Secure Shell客户端将会分配一个t t y。

Secure Shell客户端有许多选项,它们中的一部分能在命令行中设置,其他的则可以通过配置文件来进行设置。系统端默认的配置文件是/ e t c/s s h_c o n f i g,单个用户的配置文件则为~ /.s s h/c o n f i g.你能定义的选项包括:认证类型、压缩、X、端口转发及S C P的一些特殊选项,例如恢复性的拷贝以及保持当前文件的属性。

ssh&scp的相关文档搜索

相关文档