系统管理指南:安全性服务

配置 Solaris 安全 Shell

缺省情况下,Solaris 安全 Shell 中未启用基于主机的验证,并且不允许同时使用两种协议。更改这些缺省设置需要管理干预。另外,要端口转发正常工作,也需要管理干预。

Procedure如何为 Solaris 安全 Shell 设置基于主机的验证

以下过程将设置一个公钥系统,其中客户机的公钥用于服务器上的验证。用户还必须创建公钥/私钥对。

在此过程中,术语客户机本地主机是指用户键入 ssh 命令的计算机。术语服务器远程主机是指客户机要尝试访问的计算机。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在客户机上,启用基于主机的验证。

    在客户机配置文件 /etc/ssh/ssh_config 中,键入以下项:


    HostbasedAuthentication yes
  3. 在服务器上,启用基于主机的验证。

    在服务器配置文件 /etc/ssh/sshd_config 中,键入相同的项:


    HostbasedAuthentication yes
  4. 在服务器上,配置文件以允许将客户机识别为受信任主机。

    有关更多信息,请参见 sshd(1M) 手册页中的 FILES 部分。

    • 将客户机作为一项添加到服务器的 /etc/shosts.equiv 文件中。


      client-host
      
    • 或者,可以指示用户在服务器上将一个有关客户机的项添加到其 ~/.shosts 文件中。


      client-host
      
  5. 在服务器上,确保 sshd 守护进程可以访问受信任主机的列表。

    /etc/ssh/sshd_config 文件中,将 IgnoreRhosts 设置为 no


    # sshd_config
    
    IgnoreRhosts no
  6. 确保站点上的 Solaris 安全 Shell 用户在两台主机上都拥有帐户。

  7. 执行以下操作之一,以将客户机的公钥放到服务器上。

    • 修改服务器上的 sshd_config 文件,然后指示用户将客户机的公共主机密钥添加到其 ~/.ssh/known_hosts 文件中。


      # sshd_config
      
      IgnoreUserKnownHosts no

      有关用户说明,请参见如何生成用于 Solaris 安全 Shell 的公钥/私钥对

    • 将客户机的公钥复制到服务器。

      主机密钥存储在 /etc/ssh 目录中。这些密钥通常由 sshd 守护进程在首次引导时生成。

      1. 将密钥添加到服务器上的 /etc/ssh/ssh_known_hosts 文件中。

        在客户机上,在某一行中键入该命令(不带反斜杠)。


        # cat /etc/ssh/ssh_host_dsa_key | ssh RemoteHost \
        
        'cat >> /etc/ssh/ssh_known_hosts && echo "Host key copied"'
        
      2. 出现提示时,提供登录口令。

        复制文件时,将会显示消息 "Host key copied"。


示例 18–1 设置基于主机的验证

在以下示例中,每台主机同时配置为服务器和客户机。任一主机上的用户都可以启动与另一台主机的 ssh 连接。以下配置可使每台主机同时成为服务器和客户机:


Procedure如何启用 Solaris 安全 Shell v1

此过程在一台主机与运行 v1 和 v2 的多台主机交互操作时非常有用。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将主机配置为同时使用两种 Solaris 安全 Shell 协议。

    编辑 /etc/ssh/sshd_config 文件。


    # Protocol 2
    
    Protocol 2,1
  3. 为用于 v1 的主机密钥提供一个独立文件。

    /etc/ssh/sshd_config 文件中添加 HostKey 项。


    HostKey /etc/ssh/ssh_host_rsa_key
    
    HostKey /etc/ssh/ssh_host_dsa_key
    
    HostKey /etc/ssh/ssh_host_rsa1_key
    
  4. 生成用于 v1 的主机密钥。


    # ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_rsa1_key -N ''
    
    -t rsa1

    表示用于 v1 的 RSA 算法。

    -f

    表示保存主机密钥的文件。

    -N ''

    表示无需口令短语。

  5. 重新启动 sshd 守护进程。


    # svcadm restart network/ssh:default
    

    您也可以重新引导系统。

Procedure如何在 Solaris 安全 Shell 中配置端口转发

使用端口转发可以将本地端口转发到远程主机。实际上,分配了一个套接字用于侦听本地端的端口。同样,也可以在远程端指定端口。


注 –

Solaris 安全 Shell 端口转发必须使用 TCP 连接。Solaris 安全 Shell 不支持使用 UDP 连接进行端口转发。


  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将远程 Solaris 安全 Shell 服务器配置为允许端口转发。

    /etc/ssh/sshd_config 文件中,将 AllowTcpForwarding 的值更改为 yes


    # Port forwarding
    
    AllowTcpForwarding yes
  3. 重新启动 Solaris 安全 Shell 服务。


    remoteHost# svcadm restart network/ssh:default
    

    有关管理持久性服务的信息,请参见《系统管理指南:基本管理》中的第 14  章 “管理服务(概述)”svcadm(1M) 手册页。

  4. 检验是否可以使用端口转发。


    remoteHost# /usr/bin/pgrep -lf sshd
    
     1296 ssh -L 2001:remoteHost:23 remoteHost