跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
安全 Shell 守护进程 (sshd) 通常在引导时(启动网络服务时)启动。该守护进程侦听来自客户机的连接。安全 Shell 会话在用户运行 ssh、scp 或 sftp 命令时开始。系统将为每个传入连接派生一个新的 sshd 守护进程。这些派生的守护进程处理密钥交换、加密、验证、命令执行以及与客户机的数据交换。这些会话特征由客户端配置文件和服务器端配置文件确定。命令行参数可以覆盖配置文件中的设置。
客户机和服务器必须相互验证。验证成功后,用户可以远程执行命令,并在主机之间复制数据。
sshd 守护进程的服务器端行为由 /etc/ssh/sshd_config 文件中的关键字设置控制。例如,sshd_config 文件控制获许访问服务器的验证类型。当 sshd 守护进程启动时,服务器端行为也可以由命令行选项控制。
客户端的行为由安全 Shell 关键字按以下优先级顺序控制:
命令行选项
用户的配置文件 ~/.ssh/config
系统范围的配置文件 /etc/ssh/ssh_config
例如,用户可以通过在命令行中指定 -c aes256–ctr,aes128-ctr,arcfour 来覆盖优先选择 aes128–ctr 的系统范围配置 Ciphers。此时将首选第一种加密算法 aes256–ctr。
安全 Shell 协议 v1 和 v2 均支持客户机用户/主机验证和服务器主机验证。这两个版本的协议都涉及为保护安全 Shell 会话而交换会话加密密钥。每个协议都提供多种验证和密钥交换方法。有些方法是可选的。安全 Shell 支持一些客户机验证机制,如表 19-1 中所示。通过使用已知主机公钥来验证服务器。
对于 v1 协议,安全 Shell 支持使用口令进行用户验证。该协议还支持用户公钥和使用可信主机公钥进行验证。服务器验证通过主机公钥进行。对于 v1 协议,所有公钥都是 RSA 密钥。会话密钥的交换需要使用定期重新生成的临时服务器密钥。
对于 v2 协议,安全 Shell 支持用户验证和普通交互式验证,后者通常需要使用口令。该协议还支持使用用户公钥和可信主机公钥进行验证。密钥可以是 RSA 或者 DSA。会话密钥交换包括在服务器验证步骤中签名的 Diffie-Hellman 临时密钥交换。此外,安全 Shell 可以使用 GSS 凭证进行验证。
要在安全 Shell 中使用 GSS-API 进行验证,服务器必须具有 GSS-API 接受器凭证,而客户机必须具有 GSS-API 启动器凭证。提供对 mech_dh 和 mech_krb5 的支持。
对于 mech_dh,如果 root 运行了 keylogin 命令,则服务器具有 GSS-API 接受器凭证。
对于 mech_krb5,如果对应于服务器的主机主体在 /etc/krb5/krb5.keytab 中有一个有效项,则该服务器具有 GSS-API 接受器凭证。
如果执行了以下操作之一,客户机将具有 mech_dh 的启动器凭证:
运行了 keylogin 命令。
在 pam.conf 文件中使用了 pam_dhkeys 模块。
如果执行了以下操作之一,客户机将具有 mech_krb5 的启动器凭证:
运行了 kinit 命令。
在 pam.conf 文件中使用了 pam_krb5 模块。
有关在安全 RPC 中使用 mech_dh 的信息,请参见第 16 章。有关使用 mech_krb5 的信息,请参见第 21 章。有关机制的更多信息,请参见 mech(4) 和 mech_spnego(5) 手册页。
验证完成后,用户通常可以通过请求 shell 或执行命令来使用安全 Shell。通过 ssh 命令选项,用户可以发出请求。请求可能包括分配伪 tty、转发 X11 连接或 TCP/IP 连接,或通过安全连接启用 ssh-agent 验证程序。
用户会话的基本组成部分如下:
用户请求 shell 或请求执行命令,以开始会话模式。
在该模式下,会通过客户端终端发送或接收数据。在服务器端,会通过 shell 或命令发送数据。
数据传送完成后,用户程序将终止。
除已存在的连接外,所有 X11 转发和 TCP/IP 转发都会停止。现有 X11 连接和 TCP/IP 连接仍然处于打开状态。
服务器向客户机发送退出状态消息。关闭所有连接后(如仍处于打开状态的转发端口),客户机将关闭到服务器的连接。然后,客户机退出。