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 は、オンデマンドタイプの 仮想プライベートネットワーク (VPN) として使用することもできます。VPN では、暗号化されたネットワークリンクを介して、ローカルマシンと遠隔マシン間で、X ウィンドウシステムのトラフィックを転送したり個々のポート番号を接続したりできます。
Solaris Secure Shell では、次の操作を行うことができます。
セキュリティー保護されていないネットワークを介して、別のホストに安全にログインします。
2 つのホスト間でファイルを安全にコピーします。
遠隔ホスト上でコマンドを安全に実行します。
Solaris Secure Shell では、2 つのバージョンの Secure Shell プロトコルを利用できま す。バージョン 1 は、Secure Shell プロトコルのオリジナルバージョンです。バージョン 2 は、安全性が向上し、バージョン 1 の基本的なセキュリティー設計上の欠陥が修正されています。バージョン 1 は、バージョン 2 へ移行するユーザーを支援する目的だけに提供しています。バージョン 1 は、極力使用しないでください。
このマニュアルでは、v1 はバージョン 1、v2 はバージョン 2 を表しています。
Solaris Secure Shell は、遠隔ホストへの接続を認証するために、公開鍵とパスワードの方式を提供します。公開鍵認証は、パスワード認証よりも強力な認証メカニズムです。これは、非公開鍵がネットワーク上を移動しないためです。
認証方式は、次の順序で試されます。構成が認証方式を満たさないときは、次の方式が試されます。
GSS-API – mech_krb5 (Kerberos V) や mech_dh (AUTH_DH) などの GSS-API メカニズムの資格を使用して、クライアントとサーバーを認証します。GSS-API の詳細については、『Oracle Solaris セキュリティーサービス開発ガイド』の「GSS-API の紹介」を参照してください。
ホストに基づく認証 – ホスト鍵と rhosts ファイルを使用します。クライアントの RSA および DSA 公開/非公開ホスト鍵を使用してクライアントを認証します。rhosts ファイルを使用して、ユーザーに対してクライアントを承認します。
公開鍵認証 – RSA および DSA 公開/非公開鍵によってユーザーを認証します。
パスワード認証 – PAM を使用してユーザーを認証します。v2 でのキーボード認証方式では、PAM による任意のプロンプトが可能です。詳細については、sshd(1M) のマニュアルページの「SECURITY」のセクションを参照してください。
次の表では、遠隔ホストにログインしようとするユーザーを認証するための要件を示します。ユーザーは、ローカルホスト (クライアント) 上に存在します。遠隔ホスト (サーバー) は、sshd デーモンを実行しています。次の表は、Solaris Secure Shell の認証方式、互換性のあるプロトコルのバージョン、およびホストの要件の一覧です。
表 19–1 Solaris Secure Shell の認証方式
認証方式 (プロトコルのバージョン) |
ローカルホスト (クライアント) の要件 |
遠隔ホスト (サーバー) の要件 |
---|---|---|
GSS メカニズムのイニシエータの資格。 |
GSS メカニズムのアクセプタの資格。詳細については、「Solaris Secure Shell での GSS 資格の取得」を参照してください。 |
|
ユーザーアカウント /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 にローカルホストのエントリ |
|
ユーザーアカウント ~/.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 にユーザーの公開鍵 |
ユーザーアカウント |
ユーザーアカウント パスワードの有効期限が切れたときの任意のプロンプトやパスワード変更など、PAM をサポートします。 |
|
ユーザーアカウント |
ユーザーアカウント 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 の総合的な説明については、『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」の順にクリックします。アーカイブには次の記事が含まれています。
Role Based Access Control and Secure Shell – A Closer Look At Two Solaris Operating Environment Security Features
Integrating the Secure Shell Software
Configuring the Secure Shell Software
Solaris Secure Shell は OpenSSH プロジェクトのフォークです。OpenSSH の最近のバージョンに見つかった脆弱性に対するセキュリティー関連の修正が、個別のバグ修正および機能として Solaris Secure Shellに組み込まれています。Solaris Secure Shell フォークに対しては内部開発が継続されます。
Sun の技術者はプロジェクトにバグ修正を提供するほか、次の Solaris の機能を Secure Shell の Solaris フォークに組み込みました。
PAM - Solaris Secure Shell では PAM が使用されます。OpenSSH の UsePAM 設定オプションはサポートされていません。
特権の分離 - Solaris Secure Shell では OpenSSH プロジェクトの特権分離コードは使用されません。Solaris Secure Shell では、監査、記録管理、および再キーイングの処理がセッションプロトコルの処理から分離されます。
Solaris Secure Shell の特権分離コードは常にオンに設定されており、オフに切り替えることはできません。OpenSSH の UsePrivilegeSeparation 設定オプションはサポートされていません。
ロケール - Solaris Secure Shell では、RFC 4253「Secure Shell Transfer Protocol」で定義されている言語ネゴシエーションが完全にサポートされています。ユーザーがログインしたあと、ユーザーのログインシェルプロファイルを Solaris Secure Shell でネゴシエーションを行なったロケール設定に優先することができます。
監査 - Solaris Secure Shell は Solaris 監査サブシステムに完全に統合されています。監査については、パート VII「Solaris 監査」を参照してください。
GSS-API のサポート - GSS-API はユーザー認証と初期鍵交換の両方に使用できます。GSS-API は RFC 4462「Generic Security Service Application Program Interface」で定義されています。
プロキシコマンド - Solaris Secure Shell では、SOCKS5 プロトコルと HTTP プロトコルのプロキシコマンドが提供されています。例については、「ファイアウォール外部のホストにデフォルト接続を設定する方法」を参照してください。
Solaris 9 リリース以降、Solaris Secure Shell に次の変更点が取り入れられています。
Solaris Secure Shell は OpenSSH 3.5p1 からフォークされます。
/etc/ssh/sshd_config ファイルの X11Forwarding のデフォルト値が、yes になりました。
次のキーワードが採用されました。
GSSAPIAuthentication
GSSAPIKeyExchange
GSSAPIDelegateCredentials
GSSAPIStoreDelegatedCredentials
KbdInteractiveAuthentication
GSSAPI キーワードによって、 Solaris Secure Shell で GSS 資格を認証に使用できます。KbdInteractiveAuthentication キーワードが、PAM での任意のプロンプトとパスワードの変更をサポートします。キーワードとそのデフォルト値の一覧については、「Solaris Secure Shell でのキーワード」を参照してください。
ARCFOUR 暗号および AES128-CTR 暗号を使用できます。ARCFOUR は RC4 としても知られています。AES 暗号は、カウンタモードの AES です。
sshd デーモンが、/etc/default/login および login コマンドの変数を使用します。/etc/default/login の変数は、sshd_config ファイルの値によって無効にすることができます。詳細は、「Solaris Secure Shell およびログインの環境変数」と sshd_config(4) のマニュアルページを参照してください。
次の作業マップは、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 では、デフォルトでは、ホストに基づく認証と両方のプロトコルの使用は無効になっています。これらのデフォルトを変更するには、管理者の介入が必要です。また、ポート転送が機能するようにするためにも、管理者の介入が必要です。
次の手順によって公開鍵システムが設定され、クライアントの公開鍵がサーバー上での認証に使用できるようになります。また、ユーザーは、公開鍵と非公開鍵のペアを作成する必要があります。
この手順での「クライアント」および「ローカルホスト」という用語は、ユーザーが ssh コマンドを入力するマシンを指しています。「サーバー」および「リモートホスト」という用語は、クライアントがアクセスを試みるマシンを指しています。
Primary Administrator 役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
クライアントで、ホストに基づく認証を有効にします。
クライアントの構成ファイル /etc/ssh/ssh_config で、次のエントリを入力します。
HostbasedAuthentication yes |
このファイルの構文については、ssh_config(4) のマニュアルページを参照してください。
サーバーで、ホストに基づく認証を有効にします。
サーバーの構成ファイル /etc/ssh/ssh_config で、同じエントリを入力します。
HostbasedAuthentication yes |
このファイルの構文については、sshd_config(4) のマニュアルページを参照してください。
サーバーで、クライアントが信頼されるホストとして認識されるようにするファイルを構成します。
詳細については、sshd(1M) のマニュアルページの「FILES」のセクションを参照してください。
サーバーで、sshdデーモンが信頼されるホストのリストにアクセスできるようにします。
/etc/ssh/sshd_config ファイルで、IgnoreRhosts を no に設定します。
## sshd_config IgnoreRhosts no |
使用するサイトの Solaris Secure Shell のユーザーが両方のホストでアカウントを持つようにします。
クライアントの公開鍵をサーバー上に置くために、次のどちらかを行います。
サーバー上の sshd_config ファイルを変更後、クライアントの公開ホスト鍵を ~/.ssh/known_hosts ファイルに追加するようにユーザーに指示します。
## sshd_config IgnoreUserKnownHosts no |
ユーザーへの指示については、「Solaris Secure Shell で使用する公開鍵と非公開鍵のペアを生成する方法」を参照してください。
クライアントの公開鍵をサーバーにコピーします。
ホスト鍵は、/etc/ssh ディレクトリに格納されます。鍵は、通常、最初のブート時に sshd デーモンによって生成されます。
サーバー上の /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"' |
プロンプトが表示されたら、ログインパスワードを入力します。
ファイルがコピーされると、「Host key copied」というメッセージが表示されます。
/etc/ssh/ssh_known_hosts ファイルの各行は、スペースで区切られたフィールドで構成されています。
hostnames algorithm-name publickey comment |
/etc/ssh/ssh_known_hosts ファイルを編集して、コピーしたエントリの最初のフィールドとして RemoteHost を追加します。
## /etc/ssh/ssh_known_hosts File RemoteHost <copied entry> |
次の例では、各ホストがサーバーおよびクライアントとして構成されます。一方のホストのユーザーが、他方のホストへの ssh 接続を開始できます。次の構成によって、各ホストがサーバーおよびクライアントになります。
ホストごとに、 Solaris Secure Shell 構成ファイルに次のエントリを入力します。
## /etc/ssh/ssh_config HostBasedAuthentication yes # ## /etc/ssh/sshd_config HostBasedAuthentication yes IgnoreRhosts no |
ホストごとに、shosts.equiv ファイルに他方のホストに対するエントリを入力します。
## /etc/ssh/shosts.equiv on machine2 machine1 |
## /etc/ssh/shosts.equiv on machine1 machine2 |
各ホストの公開鍵を、他方のホストの /etc/ssh/ssh_known_hosts ファイルに入力します。
## /etc/ssh/ssh_known_hosts on machine2 … machine1 |
## /etc/ssh/ssh_known_hosts on machine1 … machine2 |
ユーザーは、両方のホストにアカウントを持ちます。
## /etc/passwd on machine1 jdoe:x:3111:10:J Doe:/home/jdoe:/bin/sh |
## /etc/passwd on machine2 jdoe:x:3111:10:J Doe:/home/jdoe:/bin/sh |
この手順は、ホストが v1 および v2 を実行するホストと相互運用されるときに役立ちます。
Primary Administrator 役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
両方の Solaris Secure Shell のプロトコルを使用するホストを構成します。
/etc/ssh/sshd_config ファイルを編集します。
# Protocol 2 Protocol 2,1 |
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 |
v1 のホスト鍵を生成します。
# ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_rsa1_key -N '' |
v1 の RSA アルゴリズムを示します
ホスト鍵を保持するファイルを示します。
パスフレーズが必要ないことを示します。
sshd デーモンを再起動します。
# svcadm restart network/ssh:default |
システムをリブートしても構いません。
ポート転送によって、ローカルポートを遠隔ホストに転送することができるようになります。指定すると、ソケットはローカル側で、そのポートを待機します。また、遠隔側のポートを指定することもできます。
Solaris Secure Shell ポート転送では TCP 接続を使用する必要があります。Solaris Secure Shell はポート転送のための UDP 接続をサポートしていません。
Primary Administrator 役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
ポート転送ができるように遠隔サーバーで Solaris Secure Shell の設定を構成します。
/etc/ssh/sshd_config ファイルで AllowTcpForwarding の値を yes に変更します。
# Port forwarding AllowTcpForwarding yes |
Solaris Secure Shell サービスを再起動します。
remoteHost# svcadm restart network/ssh:default |
永続的なサービスの管理方法については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」および svcadm(1M) のマニュアルページを参照してください。
ポート転送が使用できることを確認します。
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 通信を行うことができるようにします。この方法は、 rsh コマンドを使用する場合と同様です。 | |
パスワードのプロンプトを表示せずに Solaris Secure Shell にログインします |
パスワードを Solaris Secure Shell に提供するエージェントを使用してログインできるようにします。 | |
Solaris Secure Shell のポート転送を使用します |
TCP 経由の Solaris Secure Shell 接続で使用するローカルポートまたは遠隔ポートを指定します。 | |
Solaris Secure Shell を使用してファイルをコピーします |
ホスト間で安全にファイルをコピーします。 | |
ファイアウォールの内部のホストから外部のホストに安全に接続します |
HTTP または SOCKS5 と互換性のある Solaris Secure Shell のコマンドを使用して、ファイアウォールで分断されているホスト間を接続します。 |
Solaris Secure Shell によって、ローカルシェルと遠隔シェルの間の安全なアクセスが可能になります。詳細は、ssh_config(4) および ssh(1) のマニュアルページを参照してください。
使用するサイトがホストに基づく認証またはユーザーの公開鍵認証を実装しているときは、ユーザーは公開鍵と非公開鍵のペアを生成する必要があります。追加のオプションについては、ssh-keygen(1) のマニュアルページを参照してください。
ホストに基づく認証が構成されているかどうかをシステム管理者に確認します。
鍵の生成プログラムを起動します。
myLocalHost% ssh-keygen -t rsa Generating public/private rsa key pair. … |
-t はアルゴリズムの種類で、rsa、dsa、rsa1 のいずれかです。
鍵が格納されるファイルのパスを指定します。
デフォルトでは、RSA v2 の鍵を表すファイル名 id_rsa がカッコ内に表示されます。このファイルを選択するときは、Return キーを押します。代わりのファイル名を入力することもできます。
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<Press Return> |
文字列 .pub を非公開鍵のファイル名に追加すると、自動的に公開鍵のファイル名になります。
鍵に使用するパスフレーズを入力します。
このパスフレーズは、非公開鍵を暗号化するときに使用されます。空文字列入力は極力避けてください。入力したパスフレーズは表示されません。
Enter passphrase (empty for no passphrase): <Type passphrase> |
確認のためにパスフレーズを再入力します。
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 |
結果を確認します。
鍵ファイルへのパスが正しいことを確認します。
% ls ~/.ssh id_rsa id_rsa.pub |
この時点で公開鍵と非公開鍵のペアが作成されました。
適切なオプションを選択します。
管理者がホストに基づく認証を構成しているときは、ローカルホストの公開鍵を遠隔ホストにコピーする必要がある場合があります。
遠隔ホストにログインできるようになっています。詳細については、「Solaris Secure Shell を使用して遠隔ホストにログインする方法」を参照してください。
使用するサイトで公開鍵によるユーザー認証が使用されているときは、遠隔ホストの authorized_keys ファイルに反映します。
(省略可能) パスフレーズのプロンプトを減らします。
手順については、「Solaris Secure Shell でのパスワードのプロンプトを減らす方法」を参照してください。詳細は、ssh-agent(1) および ssh-add(1) のマニュアルページを参照してください。
次の例では、ユーザーが 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"' |
次の手順で非公開鍵が変更されることはありません。この手順は、非公開鍵 (パスフレーズ) の認証メカニズムを変更するものです。詳細は、ssh-keygen(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 は、非公開鍵ファイルのパスフレーズの変更を要求します。
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)? |
このプロンプトは、遠隔ホストに初めて接続する場合には正常なプロンプトです。
プロンプトが表示されたら、遠隔ホスト鍵の信頼性を確認します。
ユーザーが送信するコマンドはすべて暗号化されます。ユーザーが受信する応答はすべて暗号化されます。
Solaris Secure Shell の接続を切断します。
終了したら、exit を入力するか、通常の方法でシェルを終了します。
myRemoteHost% exit myRemoteHost% logout Connection to myRemoteHost closed myLocalHost% |
Solaris Secure Shell の使用に際してパスフレーズやパスワードを入力しない場合は、エージェントデーモンを使用できます。セッションを開始するときにデーモンを起動します。次に、エージェントデーモンを使用して非公開鍵を格納するために、ssh-add コマンドを使用します。ホストごとにアカウントが異なる場合は、セッションに必要な非公開鍵を追加します。
エージェントデーモンの起動は、次の手順で説明するように、必要に応じて手動で行うことができます。各セッションを開始するときに、エージェントデーモンが自動的に動作するように設定することもできます (「CDE で ssh-agent コマンドが自動的に動作するように設定する方法」を参照)。
エージェントデーモンを起動します。
myLocalHost% eval `ssh-agent` Agent pid 9892 |
エージェントデーモンが起動していることを確認します。
myLocalHost% pgrep ssh-agent 9892 |
使用する非公開鍵をエージェントデーモンに追加します。
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% |
Solaris Secure Shell セッションを開始します。
myLocalHost% ssh myRemoteHost |
パスフレーズを要求するプロンプトは表示されません。
この例では、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) |
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 デーモンを実行したまま放置しても、何らかの既知の問題が発生するわけではありませんが、このデーモンにはパスワードが含まれているので、セキュリティーが脅かされる恐れがあります。
ユーザーの起動スクリプトでエージェントデーモンを自動的に起動します。
$HOME/.dtprofile スクリプトの最後に次の行を追加します。
if [ "$SSH_AUTH_SOCK" = "" -a -x /usr/bin/ssh-agent ]; then eval `/usr/bin/ssh-agent` fi |
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 セッションでこの手順を実行しても、エージェントデーモンは終了しません。
遠隔ホストに転送されるローカルポートを指定することができます。指定すると、ソケットはローカル側で、そのポートを待機します。このポートから遠隔ホストへの接続は、セキュリティー保護されたチャネルを介して行われます。たとえば、ポート 143 を指定すれば、IMAP4 で電子メールを遠隔で取得できます。また、遠隔側のポートを指定することもできます。
ポート転送を使用するために、管理者は、遠隔の Solaris Secure Shell サーバーでのポート転送を有効にする必要があります。詳細については、「Solaris Secure Shell のポート転送を構成する方法」を参照してください。
ポート転送を安全に使用するために、次のオプションのどちらかを選択してください。
ローカルポートを遠隔ポートからのセキュリティー保護された通信の受信側として設定するには、両方のポートを指定します。
遠隔からの通信を待機するローカルポートを指定します。また、通信を転送する遠隔ホストと遠隔ポートを指定します。
myLocalHost% ssh -L localPort:remoteHost:remotePort |
遠隔ポートをローカルポートからのセキュリティー保護された接続の受信側として設定するには、両方のポートを指定します。
遠隔からの通信を待機する遠隔ポートを指定します。また、通信を転送するローカルホストとローカルポートを指定します。
myLocalHost% ssh -R remotePort:localhost:localPort |
次の例は、ローカルポート転送を使用して、遠隔サーバーからのメールを安全に受信する方法を示しています。
myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost |
このコマンドは、myLocalHost のポート9143 からポート 143 に接続を転送します。ポート 143 は、myRemoteHost の IMAP v2 のサーバーポートです。ユーザーがメールアプリケーションを起動するときは、次のダイアログボックスのように、ローカルポート番号を指定する必要があります。
ダイアログボックスの localhost を myLocalHost と混同しないようにしてください。myLocalHost は仮のホスト名です。localhost はローカルシステムを表すキーワードです。
この例では、エンタープライズ環境のユーザーが、外部ネットワーク上のホストから企業のファイアウォール内部のホストに接続を転送する方法を示しています。
myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost |
このコマンドは、myOutsideHost 上のポート 9022 からローカルホスト上のポート 22 (sshd サーバー) に接続を転送します。
myOutsideHost% ssh -p 9022 localhost myLocalHost% |
次の手順では、scp コマンドを使用して、暗号化されたファイルをホスト間でコピーする方法を示します。暗号化されたファイルは、ローカルホストと遠隔ホストとの間、または 2 つの遠隔ホスト間でコピーできます。scp コマンドは、rcp コマンドと同様に動作しますが、認証を要求するプロンプトを表示する点で異なります。詳細は、scp(1) のマニュアルページを参照してください。
ftp コマンドより安全な sftp を使用することもできます。詳細は、sftp(1) のマニュアルページを参照してください。例については、例 19–6 を参照してください。
セキュリティー保護されたコピープログラムを起動します。
ソースファイル、遠隔コピー先のユーザー名、およびコピー先ディレクトリを指定します。
myLocalHost% scp myfile.1 jdoe@myRemoteHost:~ |
プロンプトが表示されたら、パスフレーズを入力します。
Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase> myfile.1 25% |******* | 640 KB 0:20 ETA myfile.1 |
パスフレーズを入力すると、進行状況インジケータが表示されます。上記の出力の 2 行目が進行状況インジケータです。進行状況インジケータには、次の項目が表示されます。
ファイル名
そのファイル全体に対する、転送が完了した量の割合 (%)
そのファイル全体に対する、転送が完了した量の割合を示すアスタリスク(*)
転送が完了したデータの量
ファイル全体が転送されるまでの推定時間 (ETA)。推定残り時間
この例では、ユーザーは sftp コマンドで特定のポートを使用しようとしています。ユーザーは -o オプションを使用してポートを指定します。
% sftp -o port=2222 guest@RemoteFileServer |
Solaris Secure Shell を使用して、ファイアウォール内部のホストからファイアウォール外部のホストに接続することができます。接続するには、構成ファイル内またはコマンド行オプションに ssh のプロキシコマンドを指定します。コマンド行オプションについては、例 19–7 を参照してください。
通常は、構成ファイルを使用して、ssh の対話操作をカスタマイズします。
1 つの方法として、~/.ssh/config の個人用構成ファイルをカスタマイズします。
もう 1 つの方法として、管理構成ファイル /etc/ssh/ssh_config を使用します。
ファイルは、2 種類のプロキシコマンドでカスタマイズできます。一方が HTTP 接続用、もう一方が SOCKS5 接続用です。詳細は、ssh_config(4) のマニュアルページを参照してください。
構成ファイルにプロキシコマンドとホストを指定します。
次の構文を使用して、必要なプロキシコマンドとホストの数に応じて行を追加します。
[Host outside-host] ProxyCommand proxy-command [-h proxy-server] \ [-p proxy-port] outside-host|%h outside-port|%p |
コマンド行で遠隔ホスト名を指定した場合、プロキシコマンド指定をインスタンスに限定します。outside-host でワイルドカードを使用した場合、一連のホストに対してプロキシコマンド指定が適用されます。
プロキシコマンドを指定します。
次のいずれかを指定できます。
HTTP 接続の場合は、/usr/lib/ssh/ssh-http-proxy-connect
SOCKS5 接続の場合は、/usr/lib/ssh/ssh-socks5-proxy-connect
これらのオプションは、プロキシサーバーとプロキシポートをそれぞれ指定します。これらのオプションは、HTTPPROXY、HTTPPROXYPORT、SOCKS5_PORT、SOCKS5_SERVER、http_proxy などの、プロキシサーバーとプロキシポートを指定するどのような環境変数よりも優先されます。http_proxy 変数は URL を指定します。これらのオプションを指定しない場合、適切な環境変数を設定する必要があります。詳細は、ssh-socks5-proxy-connect(1) および ssh-http-proxy-connect(1) のマニュアルページを参照してください。
接続先のホストを指定します。%h 代入引数を使うとコマンド行からホストを指定できます。
接続先のポートを指定します。%p 代入引数を使うとコマンド行からポートを指定できます。Host outside-host オプションを使わずに %h と %p を指定した場合、ssh コマンドが呼び出されるたびに、引数に指定されたホストにプロキシコマンドが適用されます。
外部のホストを指定して、Solaris Secure Shell を実行します。
たとえば、次のように入力します。
myLocalHost% ssh myOutsideHost |
このコマンドは、個人用構成ファイル内で myOutsideHost のプロキシコマンド指定を検索します。指定が検出されない場合、このコマンドは、システム全体の構成ファイル /etc/ssh/ssh_config から検索します。プロキシコマンドが ssh コマンドに置き換わります。
「ファイアウォール外部のホストにデフォルト接続を設定する方法」では、構成ファイルでプロキシコマンドを指定する方法について説明しました。この例では、プロキシコマンドを ssh コマンド行で指定します。
% ssh -o'Proxycommand=/usr/lib/ssh/ssh-http-proxy-connect \ -h myProxyServer -p 8080 myOutsideHost 22' myOutsideHost |
ssh コマンドの -o オプションには、プロキシコマンドを指定するコマンド行を入力できます。この例のコマンドは次のことを行います。
ssh を HTTP プロキシコマンドに置き換える
プロキシサーバーとして、ポート 8080 および myProxyServer を使用する
myOutsideHost のポート 22 に接続する