认证目标2.04 用Secure SheII和Secure Copy管理系统
默认情况下,Red Hat企业版Linux系统安装了SSH程序。RHCSA考试对SSH的要求很简单,考生只需要知道如何用它访问远程系统。另外,考生还需要知道如何在系统之间安全地传输文件。因此本节将介绍如何用ssh和scp命令访问远程系统和传输文件。
如前所述,标准的RHEL 7安装会默认安装SSH程序。虽然默认情况下防火墙是激活的,但是标准RHEL 7防火墙将TCP端口22处于打开状态以允许SSH访问。相关的配置文件保存在/etc/ssh目录中。SSH服务器的详细配置属于RHCE考试的范围。相关的客户端命令有ssh、scp和sftp,它们都要在本节中介绍。
SSH守护程序是安全的,因为它对消息进行加密。换言之,侦听网络的用户读不到SSH客户端与服务器之间传递的消息,这在像Internet这样的公共网络中是非常重要的。RHEL采用SSH版本2,此版本支持多种密钥交换算法,与原来的SSH版本1不兼容。SSH的基于密钥的验证将在第4章进行介绍。要了解RHCE考试中对SSH的要求,请参阅第11章。
2.4.1 配置SSH客户端
SSH客户端主要的配置文件是/etc/ssh/ssh_config。每个用户可以有自己的SSH客户端配置参数,它们保存在~/.ssh/config文件中。默认情况下配置文件中有4个指令。第一个是Host *指令,它将其他指令应用于所有连接。
Host *
下一个指令支持用通用安全服务应用程序编程接口(Generic Security Service Application Programming Interface)对客户端/服务器进行验证。这提供了对Kerberos验证的支持:
GSSAPIAuthentication yes
下一个指令支持对GUI应用程序的远程访问。X11是在Linux上使用的X Window System服务器的传统名称。
ForwardX11Trusted yes
下一个指令允许客户端设置几个环境变量。其细节因不同的RHEL系统而稍有差别。
SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT SendEnv LC_IDENTIFICATION LC_ALL LC_LANGUAGE SendEnv XMODIFIERS
这为从命令行访问远程系统做好了准备。
2.4.2 命令行访问
本节介绍使用ssh命令的标准访问方法。为访问一个远程系统,需要知道该远程系统的用户名和口令。默认情况下允许ssh直接访问root账户。例如,使用以下命令访问前面提到的server1系统上的root账户:
$ ssh root@server1.example.com
实际经验
当试图通过SSH访问一个远程主机时,如果发生“未知的名称或服务”等错误,则说明系统无法把主机名解析为IP地址。第3章将介绍如何配置域名解析。在那之前,为了通过SSH登录到server1.example.com,需要使用其IP地址192.168.122.50。
下面这个命令的效果相同:
$ ssh -l root server1.example.com
如果没有用户名,ssh命令就以本地系统的当前用户名访问远程系统。例如,如果从michael用户账户执行下面的命令:
$ ssh server1.example.com
则ssh命令认为你在以michael用户名登录到server1.example.com系统。如果这个命令是第一次用于两个系统,则会出现如下消息:
$ ssh server1.example.com
The authenticity of host 'server1.example.com(192.168.122.50)'
can't be established.
ECDSA key fingerprint is b6:80:5d:8c:1d:ab:18:ab:46:15:c5:c8:e3:ea:9f:1c.
Are you sure you want to continue connecting(yes/no)? yes
Warning: Permanently added 'server1.example.com,192.168.122.50'
(ECDSA)to the list of known hosts.
michael@server1.example.com's password:
一旦用ssh建立起连接,就可以在此远程系统做任何属于权限范围内的操作。例如,用户甚至可以用poweroff命令关闭远程系统。在执行这个命令后,通常需要几秒钟的时间用exit命令退出远程系统。
2.4.3 SSH的其他命令行工具
如果想用类似FTP的客户端访问远程系统,则sftp命令正好合适。尽管-l开关的意义与ssh命令不同,但是它仍然可以用于登录到远程系统上任何用户的账户。虽然普通的FTP通信采用明文模式,但是sftp命令的通信却以加密的形式传输文件。
另外,如果只是想在加密的连接线路中传输文件,则可以使用scp命令。例如,我们在本书中提供了一些截图,它们是第1章和第2章配置的虚拟机的测试结果。为了把这些截图传送给我们的某个系统,我们使用一个如下所示的命令,它把F02-20.tif文件从本地目录复制到远程系统的/home/michael/RHbook/Chapter2目录中。
# scp F02-20.tif michael@server1:/home/michael/RHbook/Chapter2/
除非已经配置了基于密钥的验证(将在第4章讨论),否则这个命令会要求server1服务器上的michael用户输入口令。当口令验证通过后,scp命令就把F02-20.tif文件以加密的形式复制到名为server1服务器的远程系统上的指定目录中。
2.4.4 SSH图形化访问
ssh命令可以用来在网络上传输GUI应用程序的输出。这听起来有点怪,但是如果本地系统运行X服务器,同时从远程系统上调用远程GUI客户端应用程序,则可使用该命令。
默认情况下,SSH服务器和客户端配置文件都已经设置好以支持在网络上进行X11通信。所需要的全部操作只是用-X开关选项连接到远程系统(或者使用-Y开关选项,以使用信任的X11转发功能,这会绕过一些安全扩展控件)。例如,可以使用图2-19中的命令序列来监控远程系统。
图2-19 用SSH访问远程GUI