Solaris のシステム管理 (セキュリティサービス)

第 19 章 Solaris Secure Shell の使用 (手順)

Solaris Secure Shell を使用すると、セキュリティー保護されていないネットワーク上の遠隔ホストに、安全にアクセスすることができます。Solaris Secure Shell には、遠隔ログインおよび遠隔ファイル転送を行うコマンドが組み込まれています。この章で説明する内容は次のとおりです。

参照情報については、第 20 章Solaris Secure Shell (参照)を参照してください。Solaris Secure Shell と OpenSSH プロジェクトの関係については、「Solaris Secure Shell と OpenSSH プロジェクト」を参照してください。

Solaris Secure Shell (概要)

Solaris Secure Shell の認証は、パスワードまたは公開鍵、あるいはその両方を使用して行われます。すべてのネットワークトラフィックは暗号化されます。このため、Solaris Secure Shell では、悪意を持つ侵入者が傍受した通信を読むことはできません。また、攻撃者が偽装することもできません。

Solaris Secure Shell は、オンデマンドタイプの 仮想プライベートネットワーク (VPN) として使用することもできます。VPN では、暗号化されたネットワークリンクを介して、ローカルマシンと遠隔マシン間で、X ウィンドウシステムのトラフィックを転送したり個々のポート番号を接続したりできます。

Solaris Secure Shell では、次の操作を行うことができます。

Solaris Secure Shell では、2 つのバージョンの Secure Shell プロトコルを利用できま す。バージョン 1 は、Secure Shell プロトコルのオリジナルバージョンです。バージョン 2 は、安全性が向上し、バージョン 1 の基本的なセキュリティー設計上の欠陥が修正されています。バージョン 1 は、バージョン 2 へ移行するユーザーを支援する目的だけに提供しています。バージョン 1 は、極力使用しないでください。


注 –

このマニュアルでは、v1 はバージョン 1、v2 はバージョン 2 を表しています。


Solaris Secure Shell 認証

Solaris Secure Shell は、遠隔ホストへの接続を認証するために、公開鍵とパスワードの方式を提供します。公開鍵認証は、パスワード認証よりも強力な認証メカニズムです。これは、非公開鍵がネットワーク上を移動しないためです。

認証方式は、次の順序で試されます。構成が認証方式を満たさないときは、次の方式が試されます。

次の表では、遠隔ホストにログインしようとするユーザーを認証するための要件を示します。ユーザーは、ローカルホスト (クライアント) 上に存在します。遠隔ホスト (サーバー) は、sshd デーモンを実行しています。次の表は、Solaris Secure Shell の認証方式、互換性のあるプロトコルのバージョン、およびホストの要件の一覧です。

表 19–1 Solaris Secure Shell の認証方式

認証方式 (プロトコルのバージョン) 

ローカルホスト (クライアント) の要件 

遠隔ホスト (サーバー) の要件 

GSS-API (v2)

GSS メカニズムのイニシエータの資格。 

GSS メカニズムのアクセプタの資格。詳細については、「Solaris Secure Shell での GSS 資格の取得」を参照してください。

ホストベース (v2)

ユーザーアカウント 

/etc/ssh/ssh_host_rsa_key または /etc/ssh/ssh_host_dsa_key にローカルホストの非公開鍵

/etc/ssh/ssh_config 内で HostbasedAuthentication yes

ユーザーアカウント 

/etc/ssh/known_hosts または ~/.ssh/known_hosts にローカルホストの公開鍵

/etc/ssh/sshd_config 内で HostbasedAuthentication yes

/etc/ssh/sshd_config 内で IgnoreRhosts no

/etc/ssh/shosts.equiv/etc/hosts.equiv~/.rhosts、または ~/.shosts にローカルホストのエントリ

RSA または DSA 公開鍵 (v2)

ユーザーアカウント 

~/.ssh/id_rsa または ~/.ssh/id_dsa に非公開鍵

~/.ssh/id_rsa.pub または ~/.ssh/id_dsa.pub にユーザーの公開鍵

ユーザーアカウント 

~/.ssh/authorized_keys にユーザーの公開鍵

RSA 公開鍵 (v1) 

ユーザーアカウント 

~/.ssh/identity に非公開鍵

~/.ssh/identity.pub にユーザーの公開鍵

ユーザーアカウント 

~/.ssh/authorized_keys にユーザーの公開鍵

キーボードによる対話 (v2)

ユーザーアカウント 

ユーザーアカウント 

パスワードの有効期限が切れたときの任意のプロンプトやパスワード変更など、PAM をサポートします。 

パスワードに基づく (v1 または v2)

ユーザーアカウント 

ユーザーアカウント 

PAM をサポートします。 

.rhosts のみ (v1)

ユーザーアカウント 

ユーザーアカウント 

/etc/ssh/sshd_config 内で IgnoreRhosts no

/etc/ssh/shosts.equiv/etc/hosts.equiv~/.shosts、または ~/.rhosts にローカルホストのエントリ

.rhosts と RSA (v1) (サーバーのみ)

ユーザーアカウント 

/etc/ssh/ssh_host_rsa1_key にローカルホストの公開鍵

ユーザーアカウント 

/etc/ssh/ssh_known_hosts または ~/.ssh/known_hosts にローカルホストの公開鍵

/etc/ssh/sshd_config 内で IgnoreRhosts no

/etc/ssh/shosts.equiv/etc/hosts.equiv~/.shosts、または ~/.rhosts にローカルホストのエントリ

企業における Solaris Secure Shell

Solaris システム上の Secure Shell の総合的な説明については、『Secure Shell in the Enterprise』 (Jason Reid 著、ISBN 0-13-142900-0、2003 年 6 月) を参照してください。このドキュメントは、Sun Microsystems Press によって発行されている Sun BluePrints Series の 1 つです。

オンラインでの情報については、Sun の BigAdmin System Administration Portal ウェブサイト (http://www.sun.com/bigadmin/home/index.jsp) にアクセスしてください。「Docs」をクリックし、「Misc./Comprehensive」の下の「Sun BluePrints」をクリックします。「BluePrints OnLine」をクリックし、「Archives by Subject」、「Security」の順にクリックします。アーカイブには次の記事が含まれています。

Solaris Secure Shell と OpenSSH プロジェクト

Solaris Secure Shell は OpenSSH プロジェクトのフォークです。OpenSSH の最近のバージョンに見つかった脆弱性に対するセキュリティー関連の修正が、個別のバグ修正および機能として Solaris Secure Shellに組み込まれています。Solaris Secure Shell フォークに対しては内部開発が継続されます。

Sun の技術者はプロジェクトにバグ修正を提供するほか、次の Solaris の機能を Secure Shell の Solaris フォークに組み込みました。

Solaris 9 リリース以降、Solaris Secure Shell に次の変更点が取り入れられています。

Solaris Secure Shell (作業マップ)

次の作業マップは、Solaris Secure Shell の構成と Solaris Secure Shell の使用についての作業マップです。

作業 

説明 

参照先 

Solaris Secure Shell を構成します 

ユーザー向けに Solaris Secure Shell を構成する管理者をガイドします。 

「Solaris Secure Shell の構成 (作業マップ)」

Solaris Secure Shell を使用します 

Solaris Secure Shell を使用するユーザーをガイドします。 

「Solaris Secure Shell の使用 (作業マップ)」

Solaris Secure Shell の構成 (作業マップ)

次の作業マップでは、Solaris Secure Shell の構成手順を示します。

作業 

説明 

参照先 

ホストに基づく認証を構成します 

クライアントとサーバーでのホストに基づく認証を構成します。 

「ホストに基づく認証を Solaris Secure Shell に設定する方法」

v1 および v2 を使用できるようにホストを構成します 

v1 および v2 のプロトコルを使用するホストに対して公開鍵のファイルを作成します。 

「Solaris Secure Shell v1 を有効にする方法」

ポート転送を構成します 

ユーザーがポート転送を使用できるようにします。 

「Solaris Secure Shell のポート転送を構成する方法」

Solaris Secure Shell の構成

Solaris Secure Shell では、デフォルトでは、ホストに基づく認証と両方のプロトコルの使用は無効になっています。これらのデフォルトを変更するには、管理者の介入が必要です。また、ポート転送が機能するようにするためにも、管理者の介入が必要です。

Procedureホストに基づく認証を Solaris Secure Shell に設定する方法

次の手順によって公開鍵システムが設定され、クライアントの公開鍵がサーバー上での認証に使用できるようになります。また、ユーザーは、公開鍵と非公開鍵のペアを作成する必要があります。

この手順での「クライアント」および「ローカルホスト」という用語は、ユーザーが ssh コマンドを入力するマシンを指しています。「サーバー」および「リモートホスト」という用語は、クライアントがアクセスを試みるマシンを指しています。

  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. クライアントで、ホストに基づく認証を有効にします。

    クライアントの構成ファイル /etc/ssh/ssh_config で、次のエントリを入力します。


    HostbasedAuthentication yes

    このファイルの構文については、ssh_config(4) のマニュアルページを参照してください。

  3. サーバーで、ホストに基づく認証を有効にします。

    サーバーの構成ファイル /etc/ssh/ssh_config で、同じエントリを入力します。


    HostbasedAuthentication yes

    このファイルの構文については、sshd_config(4) のマニュアルページを参照してください。

  4. サーバーで、クライアントが信頼されるホストとして認識されるようにするファイルを構成します。

    詳細については、sshd(1M) のマニュアルページの「FILES」のセクションを参照してください。

    • サーバーの /etc/ssh/shosts.equiv ファイルへのエントリとしてクライアントを追加します。


      client-host
      
    • または、クライアント用のエントリをサーバー上の ~/.shosts ファイルに追加するようにユーザーに指示することもできます。


      client-host
      
  5. サーバーで、sshdデーモンが信頼されるホストのリストにアクセスできるようにします。

    /etc/ssh/sshd_config ファイルで、IgnoreRhostsno に設定します。


    ## sshd_config
    IgnoreRhosts no
  6. 使用するサイトの Solaris Secure Shell のユーザーが両方のホストでアカウントを持つようにします。

  7. クライアントの公開鍵をサーバー上に置くために、次のどちらかを行います。

    • サーバー上の sshd_config ファイルを変更後、クライアントの公開ホスト鍵を ~/.ssh/known_hosts ファイルに追加するようにユーザーに指示します。


      ## sshd_config
      IgnoreUserKnownHosts no

      ユーザーへの指示については、「Solaris Secure Shell で使用する公開鍵と非公開鍵のペアを生成する方法」を参照してください。

    • クライアントの公開鍵をサーバーにコピーします。

      ホスト鍵は、/etc/ssh ディレクトリに格納されます。鍵は、通常、最初のブート時に sshd デーモンによって生成されます。

      1. サーバー上の /etc/ssh/ssh_known_hosts ファイルに鍵を追加します。

        クライアントで、バックスラッシュなしで 1 行に次のコマンドを入力します。


        # cat /etc/ssh/ssh_host_dsa_key.pub | ssh RemoteHost \
        'cat >> /etc/ssh/ssh_known_hosts && echo "Host key copied"'
        
      2. プロンプトが表示されたら、ログインパスワードを入力します。

        ファイルがコピーされると、「Host key copied」というメッセージが表示されます。

        /etc/ssh/ssh_known_hosts ファイルの各行は、スペースで区切られたフィールドで構成されています。


        hostnames algorithm-name publickey comment
        
      3. /etc/ssh/ssh_known_hosts ファイルを編集して、コピーしたエントリの最初のフィールドとして RemoteHost を追加します。


        ## /etc/ssh/ssh_known_hosts File
        RemoteHost <copied entry>
        

例 19–1 ホストに基づく認証を設定する

次の例では、各ホストがサーバーおよびクライアントとして構成されます。一方のホストのユーザーが、他方のホストへの ssh 接続を開始できます。次の構成によって、各ホストがサーバーおよびクライアントになります。


ProcedureSolaris Secure Shell v1 を有効にする方法

この手順は、ホストが v1 および v2 を実行するホストと相互運用されるときに役立ちます。

  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. 両方の Solaris Secure Shell のプロトコルを使用するホストを構成します。

    /etc/ssh/sshd_config ファイルを編集します。


    # Protocol 2
    Protocol 2,1
  3. v1 のホスト鍵用に別ファイルを指定します。

    HostKey エントリを /etc/ssh/sshd_config ファイルに追加します。


    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
    

    システムをリブートしても構いません。

ProcedureSolaris Secure Shell のポート転送を構成する方法

ポート転送によって、ローカルポートを遠隔ホストに転送することができるようになります。指定すると、ソケットはローカル側で、そのポートを待機します。また、遠隔側のポートを指定することもできます。


注 –

Solaris Secure Shell ポート転送では TCP 接続を使用する必要があります。Solaris Secure Shell はポート転送のための UDP 接続をサポートしていません。


  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. ポート転送ができるように遠隔サーバーで Solaris Secure Shell の設定を構成します。

    /etc/ssh/sshd_config ファイルで AllowTcpForwarding の値を yes に変更します。


    # Port forwarding
    AllowTcpForwarding yes
  3. Solaris Secure Shell サービスを再起動します。


    remoteHost# svcadm restart network/ssh:default
    

    永続的なサービスの管理方法については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」および svcadm(1M) のマニュアルページを参照してください。

  4. ポート転送が使用できることを確認します。


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

Solaris Secure Shell の使用 (作業マップ)

次の作業マップでは、ユーザーが Solaris Secure Shell を使用する際の手順を示します。

作業 

説明 

参照先 

公開鍵と非公開鍵のペアを作成します 

公開鍵認証を必要とするサイトの Solaris Secure Shell にアクセスできるようにします。 

「Solaris Secure Shell で使用する公開鍵と非公開鍵のペアを生成する方法」

パスフレーズを変更します 

非公開鍵を認証するフレーズを変更します。 

「Solaris Secure Shell の公開鍵のパスフレーズを変更する方法」

Solaris Secure Shell を使用してログインします 

遠隔ログイン時に、暗号化された Solaris Secure Shell 通信を行うことができるようにします。この方法は、 rsh コマンドを使用する場合と同様です。

「Solaris Secure Shell を使用して遠隔ホストにログインする方法」

パスワードのプロンプトを表示せずに Solaris Secure Shell にログインします  

パスワードを Solaris Secure Shell に提供するエージェントを使用してログインできるようにします。 

「Solaris Secure Shell でのパスワードのプロンプトを減らす方法」

   

「CDE で ssh-agent コマンドが自動的に動作するように設定する方法」

Solaris Secure Shell のポート転送を使用します 

TCP 経由の Solaris Secure Shell 接続で使用するローカルポートまたは遠隔ポートを指定します。 

「Solaris Secure Shell のポート転送を使用する方法」

Solaris Secure Shell を使用してファイルをコピーします 

ホスト間で安全にファイルをコピーします。 

「Solaris Secure Shell を使用してファイルをコピーする方法」

ファイアウォールの内部のホストから外部のホストに安全に接続します 

HTTP または SOCKS5 と互換性のある Solaris Secure Shell のコマンドを使用して、ファイアウォールで分断されているホスト間を接続します。 

「ファイアウォール外部のホストにデフォルト接続を設定する方法」

Solaris Secure Shell の使用

Solaris Secure Shell によって、ローカルシェルと遠隔シェルの間の安全なアクセスが可能になります。詳細は、ssh_config(4) および ssh(1) のマニュアルページを参照してください。

ProcedureSolaris Secure Shell で使用する公開鍵と非公開鍵のペアを生成する方法

使用するサイトがホストに基づく認証またはユーザーの公開鍵認証を実装しているときは、ユーザーは公開鍵と非公開鍵のペアを生成する必要があります。追加のオプションについては、ssh-keygen(1) のマニュアルページを参照してください。

始める前に

ホストに基づく認証が構成されているかどうかをシステム管理者に確認します。

  1. 鍵の生成プログラムを起動します。


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

    -t はアルゴリズムの種類で、rsadsarsa1 のいずれかです。

  2. 鍵が格納されるファイルのパスを指定します。

    デフォルトでは、RSA v2 の鍵を表すファイル名 id_rsa がカッコ内に表示されます。このファイルを選択するときは、Return キーを押します。代わりのファイル名を入力することもできます。


    Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<Press Return>
    

    文字列 .pub を非公開鍵のファイル名に追加すると、自動的に公開鍵のファイル名になります。

  3. 鍵に使用するパスフレーズを入力します。

    このパスフレーズは、非公開鍵を暗号化するときに使用されます。空文字列入力は極力避けてください。入力したパスフレーズは表示されません。


    Enter passphrase (empty for no passphrase): <Type passphrase>
    
  4. 確認のためにパスフレーズを再入力します。


    Enter same passphrase again: <Type passphrase>
    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 Secure Shell を使用して遠隔ホストにログインする方法」を参照してください。

      1. 次のコマンドを入力します (ただし、バックスラッシュなしで 1 行に入力)。


        % cat /etc/ssh/ssh_host_dsa_key.pub | ssh RemoteHost \
        'cat >> ~./ssh/known_hosts && echo "Host key copied"'
        
      2. プロンプトが表示されたら、ログインパスワードを入力します。


        Enter password: <Type password>
        Host key copied
        %
    • 使用するサイトで公開鍵によるユーザー認証が使用されているときは、遠隔ホストの authorized_keys ファイルに反映します。

      1. 公開鍵を遠隔ホストにコピーします。

        次のコマンドを入力します (ただし、バックスラッシュなしで 1 行に入力)。


        myLocalHost% cat $HOME/.ssh/id_rsa.pub | ssh myRemoteHost \
        'cat >> .ssh/authorized_keys && echo "Key copied"'
        
      2. プロンプトが表示されたら、ログインパスワードを入力します。

        ファイルがコピーされると「Key copied」というメッセージが表示されます。


        Enter password: Type login password
        Key copied
        myLocalHost%
  7. (省略可能) パスフレーズのプロンプトを減らします。

    手順については、「Solaris Secure Shell でのパスワードのプロンプトを減らす方法」を参照してください。詳細は、ssh-agent(1) および ssh-add(1) のマニュアルページを参照してください。


例 19–2 ユーザーに対して v1 RSA 鍵を確立する

次の例では、ユーザーが Solaris Secure 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): <Type passphrase>
Enter same passphrase again: <Type passphrase>
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"'

ProcedureSolaris Secure Shell の公開鍵のパスフレーズを変更する方法

次の手順で非公開鍵が変更されることはありません。この手順は、非公開鍵 (パスフレーズ) の認証メカニズムを変更するものです。詳細は、ssh-keygen(1) のマニュアルページを参照してください。

  1. パスフレーズを変更します。

    ssh-keygen コマンドを-p オプションを指定して入力し、プロンプトに答えます。


    myLocalHost% ssh-keygen -p
    Enter file which contains the private key (/home/jdoe/.ssh/id_rsa):<Press Return>
    Enter passphrase (empty for no passphrase): <Type passphrase>
    Enter same passphrase again:   <Type passphrase>
    

    -p は、非公開鍵ファイルのパスフレーズの変更を要求します。

ProcedureSolaris Secure Shell を使用して遠隔ホストにログインする方法

  1. Solaris Secure Shell セッションを開始します。

    ssh コマンドを入力して、遠隔ホストの名前を指定します。


    myLocalHost% ssh myRemoteHost
    

    遠隔ホストの信頼性を尋ねるプロンプトが表示されます。


    The authenticity of host 'myRemoteHost' can't be established.
    RSA key fingerprint in md5 is: 04:9f:bd:fc:3d:3e:d2:e7:49:fd:6e:18:4f:9c:26
    Are you sure you want to continue connecting(yes/no)? 

    このプロンプトは、遠隔ホストに初めて接続する場合には正常なプロンプトです。

  2. プロンプトが表示されたら、遠隔ホスト鍵の信頼性を確認します。

    • 遠隔ホストの信頼性を確認できない場合は、no と入力してシステム管理者に連絡します。


      Are you sure you want to continue connecting(yes/no)? no
      

      システム管理者は、大域の /etc/ssh/ssh_known_hosts ファイルを更新する責任があります。更新された ssh_known_hosts ファイルでは、このようなプロンプトは表示されません。

    • 遠隔ホストの信頼性を確認したら、プロンプトに答えて次の手順に進みます。


      Are you sure you want to continue connecting(yes/no)? yes
      
  3. Solaris Secure Shell に対して自分を認証します。

    1. プロンプトが表示されたら、自分のパスフレーズを入力します。


      Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase>
      
    2. プロンプトが表示されたら、アカウントのパスワードを入力します。


      jdoe@myRemoteHost's password: <Type password>
      Last login: Fri Jul 20 14:24:10 2001 from myLocalHost
      myRemoteHost%
  4. 遠隔ホストでトランザクションを実行します。

    ユーザーが送信するコマンドはすべて暗号化されます。ユーザーが受信する応答はすべて暗号化されます。

  5. Solaris Secure Shell の接続を切断します。

    終了したら、exit を入力するか、通常の方法でシェルを終了します。


    myRemoteHost% exit
    myRemoteHost% logout
    Connection to myRemoteHost closed
    myLocalHost%

ProcedureSolaris Secure Shell でのパスワードのプロンプトを減らす方法

Solaris Secure Shell の使用に際してパスフレーズやパスワードを入力しない場合は、エージェントデーモンを使用できます。セッションを開始するときにデーモンを起動します。次に、エージェントデーモンを使用して非公開鍵を格納するために、ssh-add コマンドを使用します。ホストごとにアカウントが異なる場合は、セッションに必要な非公開鍵を追加します。

エージェントデーモンの起動は、次の手順で説明するように、必要に応じて手動で行うことができます。各セッションを開始するときに、エージェントデーモンが自動的に動作するように設定することもできます (「CDE で ssh-agent コマンドが自動的に動作するように設定する方法」を参照)。

  1. エージェントデーモンを起動します。


    myLocalHost% eval `ssh-agent`
    Agent pid 9892
  2. エージェントデーモンが起動していることを確認します。


    myLocalHost% pgrep ssh-agent
    9892
  3. 使用する非公開鍵をエージェントデーモンに追加します。

    ssh-add コマンドを入力します。


    myLocalHost% ssh-add
    Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase>
    Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa)
    myLocalHost%
  4. Solaris Secure Shell セッションを開始します。


    myLocalHost% ssh myRemoteHost
    

    パスフレーズを要求するプロンプトは表示されません。


例 19–3 ssh-add オプションを使用する

この例では、jdoe が 2 つの鍵をエージェントデーモンに追加します。-l オプションは、デーモンに格納されているすべての鍵を一覧表示するために使用します。セッションの最後に、-D オプションを使用して、エージェントデーモンからすべての鍵を削除します。


myLocalHost% ssh-agent
myLocalHost% ssh-add
Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase>
Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa)
myLocalHost% ssh-add /home/jdoe/.ssh/id_dsa
Enter passphrase for /home/jdoe/.ssh/id_dsa: <Type passphrase>
Identity added:
/home/jdoe/.ssh/id_dsa(/home/jdoe/.ssh/id_dsa)

myLocalHost% ssh-add -l
md5 1024 0e:fb:3d:53:71:77:bf:57:b8:eb:f7:a7:aa:df:e0:d1
/home/jdoe/.ssh/id_rsa(RSA)
md5 1024 c1:d3:21:5e:40:60:c5:73:d8:87:09:3a:fa:5f:32:53
/home/jdoe/.ssh/id_dsa(DSA)

User conducts Solaris Secure Shell transactions

myLocalHost% ssh-add -D
Identity removed:
/home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa.pub)
/home/jdoe/.ssh/id_dsa(DSA)

ProcedureCDE で ssh-agent コマンドが自動的に動作するように設定する方法

CDE を使用する場合、Solaris Secure Shell を使用するときにパスフレーズとパスワードを入力しないようにするには、エージェントデーモン ssh-agent を自動的に起動します。このエージェントデーモンは、.dtprofile スクリプトから起動できます。パスフレーズとパスワードをエージェントデーモンに追加する方法については、例 19–3 を参照してください。


注意 – 注意 –

Sun Java Desktop System (Java DS) を使用する場合には、ssh-agent コマンドが自動的に実行されるように設定しないでください。ssh-agent プロセスの終了は CDE インタフェースによって制御されるため、Java DS を終了してもデーモンは動作し続けます。たとえば、CDE セッションでデーモンを起動し、Java DS セッションに移動してからログアウトした場合、デーモンは動作し続けます。

実行中のデーモンはシステムリソースを使用します。ssh-agent デーモンを実行したまま放置しても、何らかの既知の問題が発生するわけではありませんが、このデーモンにはパスワードが含まれているので、セキュリティーが脅かされる恐れがあります。


  1. ユーザーの起動スクリプトでエージェントデーモンを自動的に起動します。

    $HOME/.dtprofile スクリプトの最後に次の行を追加します。


    if [ "$SSH_AUTH_SOCK" = "" -a -x /usr/bin/ssh-agent ]; then
                    eval `/usr/bin/ssh-agent`
    fi
  2. CDE セッションを終了するときにエージェントデーモンを終了します。

    $HOME/.dt/sessions/sessionexit スクリプトに次の行を追加します。


    if [ "$SSH_AGENT_PID" != "" -a -x /usr/bin/ssh-agent ]; then
                    /usr/bin/ssh-agent -k
    fi

    このエントリにより、CDE セッションが終了したあとで、Solaris Secure Shell エージェントは使用できなくなります。このスクリプトは CDE に固有のインタフェース sessionexit を使用しているため、Sun Java Desktop System セッションでこの手順を実行しても、エージェントデーモンは終了しません。

ProcedureSolaris Secure Shell のポート転送を使用する方法

遠隔ホストに転送されるローカルポートを指定することができます。指定すると、ソケットはローカル側で、そのポートを待機します。このポートから遠隔ホストへの接続は、セキュリティー保護されたチャネルを介して行われます。たとえば、ポート 143 を指定すれば、IMAP4 で電子メールを遠隔で取得できます。また、遠隔側のポートを指定することもできます。

始める前に

ポート転送を使用するために、管理者は、遠隔の Solaris Secure Shell サーバーでのポート転送を有効にする必要があります。詳細については、「Solaris Secure Shell のポート転送を構成する方法」を参照してください。

  1. ポート転送を安全に使用するために、次のオプションのどちらかを選択してください。

    • ローカルポートを遠隔ポートからのセキュリティー保護された通信の受信側として設定するには、両方のポートを指定します。

      遠隔からの通信を待機するローカルポートを指定します。また、通信を転送する遠隔ホストと遠隔ポートを指定します。


      myLocalHost% ssh -L localPort:remoteHost:remotePort 
      
    • 遠隔ポートをローカルポートからのセキュリティー保護された接続の受信側として設定するには、両方のポートを指定します。

      遠隔からの通信を待機する遠隔ポートを指定します。また、通信を転送するローカルホストとローカルポートを指定します。


      myLocalHost% ssh -R remotePort:localhost:localPort
      

例 19–4 ローカルポート転送を使用してメールを受信する

次の例は、ローカルポート転送を使用して、遠隔サーバーからのメールを安全に受信する方法を示しています。


myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost 

このコマンドは、myLocalHost のポート9143 からポート 143 に接続を転送します。ポート 143 は、myRemoteHost の IMAP v2 のサーバーポートです。ユーザーがメールアプリケーションを起動するときは、次のダイアログボックスのように、ローカルポート番号を指定する必要があります。

ダイアログボックスのタイトルは「Mailer - Login」です。「IMAP Server」フィールドでは、サーバー名のあとにコロンとポート番号が続きます。

ダイアログボックスの localhostmyLocalHost と混同しないようにしてください。myLocalHost は仮のホスト名です。localhost はローカルシステムを表すキーワードです。



例 19–5 遠隔ポート転送を使用してファイアウォールの外部と通信する

この例では、エンタープライズ環境のユーザーが、外部ネットワーク上のホストから企業のファイアウォール内部のホストに接続を転送する方法を示しています。


myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost

このコマンドは、myOutsideHost 上のポート 9022 からローカルホスト上のポート 22 (sshd サーバー) に接続を転送します。


myOutsideHost% ssh -p 9022 localhost
myLocalHost%

ProcedureSolaris Secure Shell を使用してファイルをコピーする方法

次の手順では、scp コマンドを使用して、暗号化されたファイルをホスト間でコピーする方法を示します。暗号化されたファイルは、ローカルホストと遠隔ホストとの間、または 2 つの遠隔ホスト間でコピーできます。scp コマンドは、rcp コマンドと同様に動作しますが、認証を要求するプロンプトを表示する点で異なります。詳細は、scp(1) のマニュアルページを参照してください。

ftp コマンドより安全な sftp を使用することもできます。詳細は、sftp(1) のマニュアルページを参照してください。例については、例 19–6 を参照してください。

  1. セキュリティー保護されたコピープログラムを起動します。

    ソースファイル、遠隔コピー先のユーザー名、およびコピー先ディレクトリを指定します。


    myLocalHost% scp myfile.1 jdoe@myRemoteHost:~
    
  2. プロンプトが表示されたら、パスフレーズを入力します。


    Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase>
    myfile.1       25% |*******                      |    640 KB  0:20 ETA 
    myfile.1 

    パスフレーズを入力すると、進行状況インジケータが表示されます。上記の出力の 2 行目が進行状況インジケータです。進行状況インジケータには、次の項目が表示されます。

    • ファイル名

    • そのファイル全体に対する、転送が完了した量の割合 (%)

    • そのファイル全体に対する、転送が完了した量の割合を示すアスタリスク(*)

    • 転送が完了したデータの量

    • ファイル全体が転送されるまでの推定時間 (ETA)。推定残り時間


例 19–6 sftp コマンドを使用するときにポートを指定する

この例では、ユーザーは sftp コマンドで特定のポートを使用しようとしています。ユーザーは -o オプションを使用してポートを指定します。


% sftp -o port=2222 guest@RemoteFileServer

Procedureファイアウォール外部のホストにデフォルト接続を設定する方法

Solaris Secure Shell を使用して、ファイアウォール内部のホストからファイアウォール外部のホストに接続することができます。接続するには、構成ファイル内またはコマンド行オプションに ssh のプロキシコマンドを指定します。コマンド行オプションについては、例 19–7 を参照してください。

通常は、構成ファイルを使用して、ssh の対話操作をカスタマイズします。

ファイルは、2 種類のプロキシコマンドでカスタマイズできます。一方が HTTP 接続用、もう一方が SOCKS5 接続用です。詳細は、ssh_config(4) のマニュアルページを参照してください。

  1. 構成ファイルにプロキシコマンドとホストを指定します。

    次の構文を使用して、必要なプロキシコマンドとホストの数に応じて行を追加します。


    [Host outside-host]
    ProxyCommand proxy-command [-h proxy-server] \
    [-p proxy-port] outside-host|%h outside-port|%p
    Host outside-host

    コマンド行で遠隔ホスト名を指定した場合、プロキシコマンド指定をインスタンスに限定します。outside-host でワイルドカードを使用した場合、一連のホストに対してプロキシコマンド指定が適用されます。

    proxy-command

    プロキシコマンドを指定します。

    次のいずれかを指定できます。

    • HTTP 接続の場合は、/usr/lib/ssh/ssh-http-proxy-connect

    • SOCKS5 接続の場合は、/usr/lib/ssh/ssh-socks5-proxy-connect

    -h proxy-server-p proxy-port

    これらのオプションは、プロキシサーバーとプロキシポートをそれぞれ指定します。これらのオプションは、HTTPPROXYHTTPPROXYPORTSOCKS5_PORTSOCKS5_SERVERhttp_proxy などの、プロキシサーバーとプロキシポートを指定するどのような環境変数よりも優先されます。http_proxy 変数は URL を指定します。これらのオプションを指定しない場合、適切な環境変数を設定する必要があります。詳細は、ssh-socks5-proxy-connect(1) および ssh-http-proxy-connect(1) のマニュアルページを参照してください。

    outside-host

    接続先のホストを指定します。%h 代入引数を使うとコマンド行からホストを指定できます。

    outside-port

    接続先のポートを指定します。%p 代入引数を使うとコマンド行からポートを指定できます。Host outside-host オプションを使わずに %h%p を指定した場合、ssh コマンドが呼び出されるたびに、引数に指定されたホストにプロキシコマンドが適用されます。

  2. 外部のホストを指定して、Solaris Secure Shell を実行します。

    たとえば、次のように入力します。


    myLocalHost% ssh myOutsideHost
    

    このコマンドは、個人用構成ファイル内で myOutsideHost のプロキシコマンド指定を検索します。指定が検出されない場合、このコマンドは、システム全体の構成ファイル /etc/ssh/ssh_config から検索します。プロキシコマンドが ssh コマンドに置き換わります。


例 19–7 コマンド行からファイアウォール外部のホストに接続する

「ファイアウォール外部のホストにデフォルト接続を設定する方法」では、構成ファイルでプロキシコマンドを指定する方法について説明しました。この例では、プロキシコマンドを ssh コマンド行で指定します。


% ssh -o'Proxycommand=/usr/lib/ssh/ssh-http-proxy-connect \
-h myProxyServer -p 8080 myOutsideHost 22' myOutsideHost

ssh コマンドの -o オプションには、プロキシコマンドを指定するコマンド行を入力できます。この例のコマンドは次のことを行います。