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

Procedure如何生成用于 Solaris 安全 Shell 的公钥/私钥对

如果用户的站点要实现基于主机的验证或用户公钥验证,则必须生成公钥/私钥对。有关其他选项,请参见 ssh-keygen(1) 手册页。

开始之前

通过系统管理员确认是否配置了基于主机的验证。

  1. 启动密钥生成程序。


    myLocalHost% ssh-keygen -t rsa
    
    Generating public/private rsa key pair.
    
    …

    其中,-t 是算法类型,可以是 rsadsarsa1 之一。

  2. 指定将保存密钥的文件的路径。

    缺省情况下,文件名 id_rsa(表示 RSA v2 密钥)显示在括号中。可通过按回车键选择此文件。或者,可以键入替换的文件名。


    Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<按回车键>
    

    通过将字符串 .pub 附加到私钥文件的名称后,可以自动创建公钥的文件名。

  3. 键入使用密钥的口令短语。

    此口令短语用于加密私钥。强烈建议不要使用空项。请注意,键入口令短语时,它们不会显示。


    Enter passphrase (empty for no passphrase): <键入口令短语>
    
  4. 重新键入口令短语以进行确认。


    Enter same passphrase again: <键入口令短语>
    
    Your identification has been saved in /home/jdoe/.ssh/id_rsa.
    
    Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub.
    
    The key fingerprint is:
    
    0e:fb:3d:57:71:73:bf:58:b8:eb:f3:a3:aa:df:e0:d1 jdoe@myLocalHost
  5. 检查结果。

    检查密钥文件的路径是否正确。


    % ls ~/.ssh
    
    id_rsa
    
    id_rsa.pub

    此时,已创建公钥/私钥对。

  6. 选择适当的选项:

    • 如果管理员已配置了基于主机的验证,则可能需要将本地主机的公钥复制到远程主机。

      现在即可登录到远程主机。有关详细信息,请参见如何使用 Solaris 安全 Shell 登录到远程主机

      1. 在一行中键入命令(不带反斜杠)。


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


        Enter password: <键入口令>
        
        Host key copied
        
        %
    • 如果站点使用公钥来进行用户验证,请在远程主机上装载 authorized_keys 文件。

      1. 将公钥复制到远程主机。

        在一行中键入命令(不带反斜杠)。


        myLocalHost% cat $HOME/.ssh/id_rsa.pub | ssh myRemoteHost \
        
        'cat >> .ssh/authorized_keys && echo "Key copied"'
        
      2. 出现提示时,提供登录口令。

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


        Enter password: 键入登录口令
        
        Key copied
        
        myLocalHost%
  7. (可选的)减少口令短语的提示。

    有关过程,请参见如何减少 Solaris 安全 Shell 中的口令提示。有关更多信息,请参见 ssh-agent(1)ssh-add(1) 手册页。


示例 18–2 为用户建立 v1 RSA 密钥

在以下示例中,用户可以访问运行 Solaris 安全 Shell v1 协议的主机。要通过 v1 主机进行验证,用户应创建 v1 密钥,然后将公钥部分复制到远程主机。


myLocalHost% ssh-keygen -t rsa1 -f /home/jdoe/.ssh/identity

Generating public/private rsa key pair.

…

Enter passphrase (empty for no passphrase): <键入口令短语>

Enter same passphrase again: <键入口令短语>

Your identification has been saved in /home/jdoe/.ssh/identity.

Your public key has been saved in /home/jdoe/.ssh/identity.pub.

The key fingerprint is:

…

myLocalHost% ls ~/.ssh

id_rsa

id_rsa.pub

identity

identity.pub

myLocalHost% cat $HOME/.ssh/identity.pub | ssh myRemoteHost \

'cat >> .ssh/authorized_keys && echo "Key copied"'