.\" -*- nroff -*- .\" .\" Author: Tatu Ylonen .\" Copyright (c) 1995 Tatu Ylonen , Espoo, Finland .\" All rights reserved .\" .\" As far as I am concerned, the code I have written for this software .\" can be used freely for any purpose. Any derived versions of this .\" software must be clearly marked as such, and if the derived work is .\" incompatible with the protocol description in the RFC file, it must be .\" called by a name other than "ssh" or "Secure Shell". .\" .\" Copyright (c) 1999,2000 Markus Friedl. All rights reserved. .\" Copyright (c) 1999 Aaron Campbell. All rights reserved. .\" Copyright (c) 1999 Theo de Raadt. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" $OpenBSD: sshd.8,v 1.246 2008/07/02 02:24:18 djm Exp $ .\" .\" Japanese translation: $Id: sshd.8,v 1.2 2008/03/31 14:42:59 yusuke Exp $ .\" by Yusuke Shinyama .\" .Dd $Mdocdate: June 11 2008 $ .Dt SSHD 8 .Os .Sh 名前 .Nm sshd .Nd OpenSSH SSH デーモン .Sh 書式 .Nm sshd .Bk -words .Op Fl 46DdeiqTt .Op Fl b Ar ビット数 .Op Fl C Ar 接続指定 .Op Fl f Ar 設定ファイル .Op Fl g Ar ログイン制限時間 .Op Fl h Ar ホスト鍵ファイル .Op Fl k Ar 鍵の生成間隔 .Op Fl o Ar オプション .Op Fl p Ar ポート .Op Fl u Ar 長さ .Ek .Sh 説明 .Nm (OpenSSH デーモン) は .Xr ssh 1 のためのデーモンプログラムです。 これらのプログラムはともに .Xr rlogin と .Xr rsh を置き換えるもので、 安全でないネットワーク上にある、2つの信頼されていないホスト間で、 暗号化された安全な通信を提供します。 .Pp .Nm はクライアントからの接続を listen します。 通常、これはブート時に .Pa /etc/rc から起動され、接続を受けつけるたびに新しいデーモンが fork します。 fork したデーモンは、鍵の交換、暗号化、認証、コマンド実行、 そしてデータ交換をおこないます。 .Pp .Nm はコマンドライン オプションか、設定ファイル (デフォルトでは .Xr sshd_config 5 ) によって設定することができます。コマンドラインからのオプションは、 設定ファイルで指定されている値よりも優先されます。 .Nm はハングアップシグナル .Dv SIGHUP を受け取ると、自分の設定ファイルを読み込みなおします。 これは自分自身を開始したときのパス名、 たとえば .Pa /usr/sbin/sshd とオプションを exec することによっておこないます。 .Pp コマンドラインオプションには次のようなものがあります: .Bl -tag -width Ds .It Fl 4 .Nm が IPv4 アドレスのみを使うよう強制します。 .It Fl 6 .Nm が IPv6 アドレスのみを使うよう強制します。 .It Fl b Ar ビット数 プロトコル バージョン 1 で短期的に使われるサーバ鍵の ビット数を指定します (デフォルトでは 1024 ビットです)。 .It Fl C Ar 接続指定 拡張テストモード .Fl T で使われる接続時のパラメータを指定します。 このオプションが与えられた場合、そこで指定されている ユーザ、ホスト名、およびアドレスに一致するような、 設定ファイル中の .Cm Match 指定すべてが標準出力に表示されます。 接続指定は「キーワード=値」の形式で指定し、 使えるキーワードは .Dq user 、 .Dq host および .Dq addr です。これらは順序は関係ありませんが、すべてを指定する必要があります。 これらの指定をカンマで区切るか、あるいは複数の .Fl C オプションを使ってもかまいません。 .It Fl D このオプションが指定されると .Nm は切り離し (detach) をおこなわず、デーモンにはなりません。 これは .Nm の監視を簡単にします。 .It Fl d デバッグモードにします。サーバはシステムログに対し、 冗長なデバッグ表示を出力するようになり、バックグラウンドには移行しません。 またサーバは fork せず、1 回の接続しか受けつけません。 このオプションはサーバのデバッグのためだけに用意されています。 複数の .Fl d オプションをつけるとデバッグレベルが上がります。 最高は 3 です。 .It Fl e このオプションが指定されると、 .Nm は出力を syslog のかわりに標準エラー出力に送ります。 .It Fl f Ar 設定ファイル 設定ファイルの名前を指定します。デフォルトは .Pa /etc/ssh/sshd_config になっています。 .Nm は設定ファイルがないと起動しません。 .It Fl g Ar ログイン制限時間 クライアントが自分自身を認証するまでの制限時間を指定します (デフォルトは 120 秒)。クライアントがこの時間内にユーザを 認証できなかった場合、サーバは接続を切って終了します。ゼロを 値として与えると制限はなくなります。 .It Fl h Ar ホスト鍵ファイル ホスト鍵を読むファイルを指定します。 このオプションは .Nm を root 以外で起動するときは必ず指定しなければいけません (ホスト鍵のファイルはふつう root からしか読めないようになっているからです)。 デフォルトでは、プロトコル バージョン 1 用の鍵が .Pa /etc/ssh/ssh_host_key であり、プロトコル バージョン 2 用の鍵が .Pa /etc/ssh/ssh_host_rsa_key および .Pa /etc/ssh/ssh_host_dsa_key です。 異なるバージョンのプロトコルやホスト鍵の方式に対し、 複数のホスト鍵ファイルを指定することも可能です。 .It Fl i .Nm が .Xr inetd 8 から起動されることを指定します。ふつう .Nm が inetd から起動されることはありません。 なぜなら sshd はクライアントを 受けつける前にサーバ鍵を生成しておく必要があり、これには 数十秒かかるためです。鍵が毎回生成しなおされると、クライアントは 非常に長い間待たされてしまいます。しかし鍵のサイズが 小さければ (たとえば 512 ビットぐらい)、inetd から .Nm を使うことも可能でしょう。 .It Fl k Ar 鍵の生成間隔 サーバ鍵がどれくらいの間隔で再生成されるかを指定します (デフォルトでは 3600 秒、つまり 1 時間ごとになっています)。 こんなに頻繁に鍵を再生成するのは以下のような理由によります。 この鍵はどこにも格納されません。そのため、このようにしておくと たとえマシンがクラックされたり物理的に乗っ取られたりしても、 1 時間後には盗聴した通信を解読して鍵を見つけることは不可能に なります。この値としてゼロを指定すると、 鍵はまったく再生成されなくなります。 .It Fl o Ar オプション 設定ファイルと同じ形式でオプションを与えたいときに使用します。 これはコマンドラインオプションでは指定できないオプションを 指定したいときに便利です。 オプションの詳細と、これらがとりうる値については .Xr sshd_config 5 を参照してください。 .It Fl p Ar ポート サーバが接続を受けつける (listen する) ポートを指定します (デフォルトは 22 です)。 複数のポートオプションを指定することも可能です。 なお、コマンドラインオプションでポートを指定した場合、 .Cm Port で指定されたポートは無視されます。 .Cm ListenAddress で指定したポートはコマンドラインで指定されたポートよりも優先されます。 .It Fl q 静かなモード。 ふつう、 .Nm は接続の開始と認証および終了を syslog に残します。 このオプションを指定すると syslog には何も残りません。 .It Fl T 拡張テストモード。 設定ファイルの正当性を検査し、有効な設定項目を標準出力に表示したあと終了します。 オプションとして、 .Fl C を指定すると、そこで指定されているひとつあるいは複数の接続パラメータに .Cm Match 指定が適用されます。 .It Fl t テストモード。 設定ファイルや鍵の正当性チェックだけをおこないます。 これは設定ファイル項目を変更した際に、 .Nm を安全に更新するのに便利です。 .It Fl u Ar 長さ このオプションはリモートホスト名を保持させる .Li utmp 構造体のフィールド長を指定するのに使われます。名前解決されたホストがこの .Ar len よりも長い場合、ドットで区切られた 10 進の数値がかわりに保持されます。 これは非常に長いホスト名をもつホストがこのフィールドをあふれさせても、 一意に識別できるようにするためです。 .Fl u0 を指定すると .Pa utmp ファイルにはつねにドットで区切られた 10 進値が使われるようになります。 また .Fl u0 は .Nm が DNS 要求をおこなわないようにするのにも使うことができます。 ただし設定ファイルや認証メカニズムでこれが必要とされた 場合はこの限りではありません。 DNS を要求する可能性のある認証メカニズムは .Cm RhostsRSAAuthentication 、 .Cm HostbasedAuthentication および .Cm from="pattern-list" オプションを使った鍵ファイルです。 DNS を必要とする設定オプションには、 .Cm AllowUsers あるいは .Cm DenyUsers . で使われている「USER@HOST」のパターンも含まれますので注意してください。 .El .Sh 認証 OpenSSH SSH デーモンは、デフォルトで SSH プロトコルバージョン 1 と 2 を両方サポートしています。 サポートするプロトコルは .Xr sshd_config 5 の .Cm Protocol オプションで変更できます。 プロトコルバージョン 2 は RSA および DSA鍵をどちらも サポートしています。プロトコルバージョン 1 がサポートするのは RSA 鍵だけです。どちらのプロトコルでも、各ホストは 識別のためのホストごとの鍵を持っており、 これは通常 2048ビットからなります。 .Pp プロトコルバージョン 1 では、追加のサーバ鍵によって forward security (訳注: 将来、鍵が破られても現在の通信の秘匿性が保たれる特性) を 提供しています。サーバ鍵は使われると通常 1 時間おきに 再生成され、これは決してディスクに保存されません。 クライアントが接続してくると、デーモンはそのホスト 公開鍵とサーバ鍵を使って応答します。 クライアントはその RSA ホスト鍵を 自分のデータベース中にあるものと比較し、 それが変更されていないことを確かめます。 その後クライアントは 256 ビットの乱数を生成し、 ホスト鍵とサーバ鍵を使って暗号化したあと 暗号化された数値をサーバに送ります。 以降、クライアントとサーバの両者はこの乱数を セッション鍵として使い、通信を暗号化します。 これ以降の通信は一般的な Blowfish あるいは 3DES (デフォルト) 暗号方式を使って暗号化されます。 暗号方式は、クライアントが サーバから提供されたものの中から選択します。 .Pp プロトコルバージョン 2 では、forward security は Diffie-Hellman 鍵交換によって提供されます。 この鍵交換プロセスにより、サーバとクライアント間で 共通のセッション鍵が得られます。これ以降の通信は 現在のところ 128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES あるいは 256-bit AES などの共通鍵暗号方式によって 暗号化されます。 暗号方式は、クライアントが サーバから提供されたものの中から選択します。 さらに、通信の正真性 (integrity、訳注: 内容が改ざんされていないこと) が メッセージ認証コード (MAC) によって提供されます。 これには hmac-md5, hmac-sha1, umac-64 あるいは hmac-ripemd160 が使われます。 .Pp 最後にサーバとクライアントは認証をおこないます。 ここではクライアントは自分自身を認証するために、 ホストベースド認証 (host-based authentication)、 公開鍵認証 (public key authentication)、 チャレンジ・レスポンス認証 (challenge-response authentication)、 またはパスワード認証 (password authentication) を 使用します。 .Pp 認証の形式に関わらず、アカウントがアクセス可能かどうかをチェックします。 アカウントがロックされているか、 .Cm DenyUsers に記載されているか、またはそのグループが .Cm DenyGroups に記載されている場合、アカウントはアクセスできません。 ロックされたアカウントの定義はシステムに依存します。 いくつかのプラットフォーム (例えば AIX) では独自のアカウントデータベースを持ち、 またいくつかは passwd フィールドを変更します (Solaris および UnixWare では .Ql \&*LK\&* , HP-UX では .Ql \&* , Tru64 では .Ql Nologin を含みます。 また FreeBSD では .Ql \&*LOCKED\&* , Linux では .Ql \&!! が先行します)。 あるアカウントに公開鍵認証を許可しておきながら、パスワード認証を 無効にする必要がある場合、パスワードフィールドはこれら以外の値 (例えば .Ql NP または .Ql \&*NP\&* ) に設定する必要があります。 .Pp クライアントが認証に成功すると、セッションを準備するための 対話がおこなわれます。この時点で、クライアントは 仮想端末の使用を要求したり、X11 接続の転送、 TCP 接続の転送、あるいは認証エージェントの転送などを 安全な通信路を介して要求することができます。 .Pp この後、クライアントはシェルを要求するか、 コマンドを実行します。両者はこの後セッションモードに入ります。 セッションモードでは、どちらの側もいつでもデータを 送ることができ、これらのデータはサーバ側のシェルや コマンドとクライアント側のユーザの端末の間で やりとりされます。 .Pp ユーザのプログラムが終了し、すべての転送された X11 接続や その他の接続が閉じられると、サーバはコマンドの終了状態を クライアント側に送り、両者は終了します。 .Sh ログインの過程 ユーザがログインに成功すると、 .Nm は以下のことをおこないます: .Bl -enum -offset indent .It ユーザが端末にログインしており、 コマンドがとくに指定されていない場合、 (設定ファイルまたは .Pa ~/.hushlogin -- .Sx FILES の項を参照 -- で禁止されていなければ) 前回のログイン時刻と .Pa /etc/motd を表示する。 .It ユーザが端末にログインしている場合、ログイン時刻を記録する。 .It .Pa /etc/nologin をチェックする。これが存在する場合、 (root でなければ) その内容を表示して終了する。 .It そのユーザの通常の権限に移行する。 .It 基本的な環境変数を設定する。 .It .Pa ~/.ssh/environment が存在していて、 ユーザの環境変数を変更することが許されていれば、 それを読み込む。 .Xr sshd_config 5 の .Cm PermitUserEnvironment 設定項目を参照のこと。 .It ユーザのホームディレクトリに移動する。 .It .Pa ~/.ssh/rc が存在する場合、それを実行する。そうでなければ、もし .Pa /etc/ssh/sshrc が存在しているなら、それを実行する。 これ以外の場合は xauth を実行する。この .Dq rc ファイルには、X11 の認証プロトコルとそのクッキーが 標準入力から与えられる。(下記の .Sx SSHRC を参照してください。) .It ユーザのシェルまたはコマンドを実行する。 .El .Sh SSHRC .Pa ~/.ssh/rc ファイルが存在する場合は、環境変数ファイルを 読み込んだあと、ユーザのシェルやコマンドが開始する前に このファイルが .Xr sh 1 を介して実行されます。 このスクリプトは標準出力 (stdout) に何も表示してはいけません。 かわりに標準エラー出力 (stderr) を使ってください。 X11転送を使っている場合、このスクリプトは標準入力から 「仮のクッキー」 (および .Ev DISPLAY 環境変数) を受けとることになります。 この場合、このスクリプトは .Xr xauth 1 を呼び出す必要があります。なぜならこのとき .Nm は X11 クッキーを追加するために xauth を 自動では呼ばないからです。 .Pp このファイルのおもな目的は、 ユーザのホームディレクトリがアクセス可能になる前に必要な 初期化作業を実行することです。そういった環境の例としては AFS があります。 .Pp このファイルはおそらく以下のような初期化コードと 似たものを含むことになるでしょう: .Bd -literal -offset 3n if read proto cookie && [ -n "$DISPLAY" ]; then if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then # X11UseLocalhost=yes echo add unix:`echo $DISPLAY | cut -c11-` $proto $cookie else # X11UseLocalhost=no echo add $DISPLAY $proto $cookie fi | xauth -q - fi .Ed .Pp このファイルが存在しない場合、 .Pa /etc/ssh/sshrc が実行されます。このファイルも存在しない場合は、 クッキーを追加するために xauth が実行されます。 .Sh AUTHORIZED_KEYS ファイルの形式 .Cm AuthorizedKeysFile 項目は公開鍵認証のための公開鍵を格納する ファイルを指定します。指定がない場合、このファイルは デフォルトで .Pa ~/.ssh/authorized_keys になります。 このファイルには各行にひとつの鍵が格納されています (空行や .Ql # で始まる行はコメントとして無視されます)。 プロトコル バージョン 1 の公開鍵では、 空白で区切られた以下の項目が格納されています: オプション、ビット数、指数、係数 (modulus)、鍵のコメント。 プロトコル バージョン 2 の公開鍵では、 以下の項目が格納されています: オプション、鍵の種類、 base64 エンコードされた鍵本体、鍵のコメント。 オプション項目はなくてもかまいません。 オプションが存在するかどうかは、 この行が数字で始まるかどうかによって決定されます (オプション項目は決して数字では始まりません)。 プロトコル バージョン 1 では、RSA 鍵は ビット数、指数および係数 (modulus) によって表されます。 コメント欄は利用されません (が、鍵を区別するのに役立ちます)。 プロトコル バージョン 2 では、鍵の種類は .Dq ssh-dss あるいは .Dq ssh-rsa です。 .Pp これらのファイルでは通常、 1 行が何百バイトもの長さに なっていることに注意してください (これは公開鍵の係数のサイズが大きいためです)。 DSA 鍵の長さの制限は最大 8 キロバイトで、 RSA 鍵の最大は 16 キロバイトです。 これを手でタイプする気にはならないでしょう。かわりに .Pa identity.pub , .Pa id_dsa.pub あるいは .Pa id_rsa.pub をコピーして、それを編集してください。 .Pp .Nm では、プロトコル 1 とプロトコル 2 の両方で、 RSA 鍵の長さが少なくとも 768 ビット以上である必要があります。 .Pp オプションは (もしあれば) カンマによって 区切ることができます。 間にスペースを入れてはいけませんが、 ダブルクォートの間にはさめばオッケーです。 以下のオプションがサポートされています (これらのキーワードは大文字小文字を区別しません) : .Bl -tag -width Ds .It Cm command="command" このオプションを使うと、認証にこの鍵が使われたときは必ず ここで指定されたコマンドが実行されるようになります。 ユーザが (訳注: クライアント側で) 指定したコマンドは 無視されます。クライアント側が仮想端末を要求していれば、 ここで指定されたコマンドは仮想端末上で実行されます。 そうでなければ端末なしで実行されます。 8-bit クリーンな通信が欲しい場合は、 仮想端末を要求してはいけません。あるいは .Cm no-pty オプションを使ってください。 コマンド文字列中にダブルクォートを入れたいときは、 前にバックスラッシュをつけてください。 このオプションは、 ある公開鍵には特定の操作だけしかさせないように するのに有効です。例として、 リモートバックアップだけをさせて、 それ以外な何もさせないような鍵がつくれます。 クライアントの TCP や X11 転送は、 明示的に禁止されていない限り可能なので注意してください。 クライアントによって元々実行されたコマンドラインは環境変数 .Ev SSH_ORIGINAL_COMMAND に格納されています。 注意: このオプションはシェル、コマンドまたは サブシステムの実行に適用されます。 .It Cm environment="NAME=value" 認証にこの鍵が使われたとき、 環境変数に追加される文字列を指定します。 このやりかたで指定した環境変数は、 デフォルトの環境変数の値を上書きします。 このオプションは複数個指定することも可能です。 環境変数の変更はデフォルトでは禁止されており、 これを許可するには .Cm PermitUserEnvironment を設定する必要があります。 .Cm UseLogin を使っているときは、このオプションは自動的に禁止されます。 .It Cm from="pattern-list" このオプションをつけると、公開鍵認証に加えて、 カンマで区切ったリモートホスト名 (canonical name) または IPアドレスを チェックできるようになります。 パターンに関する詳細は、 .Xr ssh_config 5 の .Sx パターン の項を参照してください。 .Pp ホスト名やIPアドレスにはワイルドカード指定が使用できますが、 .Cm from 節には CIDR表記 (アドレス/マスク長 の形式) で IPアドレス群を指定することもできます。 .Pp このオプション目的は、セキュリティのさらなる向上です: 公開鍵認証それ自体は、(鍵を除いて) ネットワークや ネームサーバ、その他ありとあらゆるものを信用しません。 しかし、もし何者かが何らかの方法で鍵を盗むことができれば、 その鍵を使って世界のどこからでもログインできてしまうことになります。 このオプションは、そのような盗まれた鍵を使うことを より困難にします (もしこれを使おうとするなら、鍵のほかに ネームサーバやルータなどにまで侵入しなくてはならないからです)。 .It Cm no-agent-forwarding 認証にこの鍵が使われたときは、 認証エージェントの転送が禁止されます。 .It Cm no-port-forwarding 認証にこの鍵が使われたときは TCP 転送が禁止されます。 クライアントがポート転送を要求しても、 すべてエラーになります。たとえば、これは .Cm command オプションの指定されている接続などで使われます。 .It Cm no-pty 端末の割り当てを禁止します (仮想端末の割り当てが失敗するようになります)。 .It Cm no-user-rc .Pa ~/.ssh/rc の実行を禁止します。 .It Cm no-X11-forwarding 認証にこの鍵が使われたときは X11 転送が禁止されます。 クライアントが X11 転送を要求しても、すべてエラーになります。 .It Cm permitopen="host:port" ローカルな .Li ``ssh -L'' のポート転送先を、 指定されたホストの指定されたポートのみに限定します。 IPv6 アドレスの場合は、指定する形式が異なります: .Ar host Ns / Ns Ar port .Cm permitopen オプションはカンマで区切って複数個指定することもできます。 パターンマッチングはおこなわれません。 ホスト名にはドメイン名かアドレスを そのまま書く必要があります。 .It Cm tunnel="n" サーバ側の .Xr tun 4 デバイスを強制的に指定します。 このオプションがない場合、クライアントがトンネリングを 要求すると、現在の次に使用可能なデバイスが使われます。 .El .Pp authorized_keys ファイルの例: .Bd -literal -offset 3n # コメントをつけるときは行頭から ssh-rsa AAAAB3Nza...LiPk== user@example.net from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== john@example.net command="dump /home",no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss AAAAB5...21S== tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== jane@example.net .Ed .Sh ssh_known_hosts ファイルの形式 .Pa /etc/ssh/ssh_known_hosts および .Pa ~/.ssh/known_hosts の各ファイルは今までに知られている ホストの公開鍵をすべて格納しています。 システム全体で使われる known_hosts ファイル (大域的 known_hosts ファイル) は 管理者によって用意され (必須ではありません)、 ユーザ用の known_hosts ファイルは自動的に更新されます。 ユーザがまだ知られていないホストに接続すると、 そのホスト鍵が自動的にユーザ用 known_hosts ファイルに 追加されるようになっています。 .Pp これらの known_hosts ファイルの各行は 次のような項目からなっています: ホスト名、ビット数、指数、係数 (modulus)、そしてコメント。 各項目はスペースによって区切られています。 .Pp ホスト名はカンマで区切られたパターン列です .Pf ( Ql * および .Ql \&? はワイルドカードとして使われます)。 各パターンは、クライアントを認証している場合は 順にそのホストの正式名と比較され、 サーバを認証している場合はユーザが与えた名前と比較されます。 パターンの先頭に .Ql \&! をつけると「〜でない」という 否定 (negation) の意味になります。 否定されたパターンにマッチしたホストは、 たとえその行の他のパターンにマッチしても (その行では) 受けつけられません。 ホスト名またはアドレスには、ブラケット .Ql \&[ および .Ql \&] で囲んだあと、 .Ql \&: の後に標準的でないポート番号を加えることもできます。 .Pp もうひとつの形式として、 各ホスト名はハッシュされた形式で 格納されていることもあります。 これは、万が一そのファイルが見られた時でも、 そのホスト名や IP アドレスが識別できないようにするためです。 ハッシュされたホスト名は .Ql | 文字から始まります。 各行はハッシュされたホスト名をひとつだけ持ち、 これらに上記の否定表現やワイルドカード演算子を 適用することはできません。 .Pp ビット数、指数および係数は RSA ホスト鍵から 直接取り込まれます。たとえばこれらは .Pa /etc/ssh/ssh_host_key.pub などから取得されます。 オプションのコメントは行末まで続き、 これは無視されます。 .Pp .Ql # で始まる行および空行はコメントとして無視されます。 .Pp ホスト間認証をおこなう際、 どれか適切な鍵をもった行がマッチすれば、 認証は受け入れられます。 したがって同じ名前が複数の行にあったり、 同一ホストに異なるホスト鍵が書いてあったりしても 受けつけられます (が、おすすめはしません)。 異なったドメインにあるホスト名の短縮形が ひとつのファイルにまとめられているときは、 これは仕方がないでしょう。 また、これらのファイルには互いに 矛盾する情報が書かれていることもあり得ます。その場合は、 どれかのファイルに正しい情報が書いてあれば 認証は受け入れられます。 .Pp 注意。 これらのファイルの各行は、ふつう何百文字もの 長さになっています。 もちろんこんなホスト鍵を手で入力したくはないでしょう。 かわりにスクリプトで生成するか、 .Pa /etc/ssh/ssh_host_key.pub をとってきてその先頭にホスト名をつけ加えるかしてください。 .Pp ssh_known_hosts の例: .Bd -literal -offset 3n # コメントをつけるときは行頭から closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....= # ハッシュされたホスト名 |1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa AAAA1234.....= .Ed .Sh 関連ファイル .Bl -tag -width Ds -compact .It ~/.hushlogin このファイルがあると、 .Cm PrintLastLog および .Cm PrintMotd がそれぞれ許可されている場合でも 最終ログイン時刻と .Pa /etc/motd ファイルの表示はされなくなります。 しかし .Cm Banner によって指定されているバナーはかならず表示します。 .Pp .It ~/.rhosts このファイルはホストベースド認証 (host-based authentication -- 詳しくは .Xr ssh 1 を参照) で使われます。 .Nm はこのファイルを root として読むため、 ユーザのホームディレクトリが NFS 上にある場合、 マシンによっては、このファイルは誰にでも 読めるようにしておく必要があるかもしれません。 .Pp .It ~/.shosts このファイルは .Pa .rhosts とまったく同じように扱われます。 しかしこれは rlogin/rsh から使われることなく ホストベースド認証を許可することができます。 .Pp .It ~/.ssh/ このディレクトリはユーザ用のすべての設定や認証用の情報が入る デフォルトの場所です。一般的に、このディレクトリの内容をまるごと 隠しておくという必要があるわけではありませんが、推奨される パーミッションは、所有者に対しては read/write/execute を許可し、 他の人にはアクセスさせないようにしておく、というものです。 .Pp .It Pa ~/.ssh/authorized_keys そのユーザのアカウントでログインするときに 使われる公開鍵 (RSA または DSA) の一覧が入っています。 このファイルの形式は上で説明されています。 このファイルの内容はそれほど秘密にする必要はありませんが、 推奨されるパーミッションは、その所有者のみが読み書き可能で、 それ以外の人には読めないようにしておくというものです。 .Pp このファイル本体、あるいは .Pa ~/.ssh ディレクトリ、あるいはそのユーザのホームディレクトリに対して 他のユーザが書き込み可能になっている場合、 権限のないユーザでもこのファイルを変更あるいは置き換えることができていまいます。 このような場合、 .Nm は .Cm StrictModes が .Dq no に設定されていない限り、このファイルの内容を使用しません。 このファイルを推奨されるパーミッションにするには、 以下のように実行します: .Dq chmod go-w ~/ ~/.ssh ~/.ssh/authorized_keys .Pp .It ~/.ssh/environment このファイルは (存在している場合)、 ログイン時に環境変数に読み込まれます。 これが含んでいてよいのは、空行、( .Ql \&# で始まる) コメント行、 および ``変数名=値'' の形式の代入行だけです。このファイルは そのユーザにのみ書き込み可能にしておいてください。 他の人が読めるようにしておく必要はありません。 環境変数の変更はデフォルトでは禁止されており、 これを許可するには .Cm PermitUserEnvironment 項目を設定する必要があります。 .Pp .It ~/.ssh/known_hosts そのユーザがこれまでにログインしたすべてのホストのホスト鍵で、 システム全体で使われる /etc/ssh/ssh_known_hosts の一覧に 含まれていないものが格納されています。 このファイルの形式は上で説明されています。 これらのファイルは root や所有者にのみ 書き込み可能にしておくべきですが、 誰にでも読めるようにしておく必要はありません。 .Pp .It ~/.ssh/rc ユーザのホームディレクトリがアクセス可能になる前に 実行すべき初期化作業が格納されています。 このファイルの形式は上で説明されています。 これらのファイルは所有者にのみ書き込み可能にしておくべきです。 誰にでも読めるようにしておく必要はありません。 .Pp .It /etc/hosts.allow .It /etc/hosts.deny このファイルは tcp-wrappers による アクセス制限を定義しています。詳しい説明は .Xr hosts_access 5 を参照してください。 .Pp .It /etc/hosts.equiv このファイルはホストベースド認証 (host-based authentication -- 詳しくは .Xr ssh 1 を参照) で使われます。 このファイルは root のみ書き込み可能にしておくべきです。 .Pp .It /etc/moduli Diffie-Hellman 鍵交換 (Diffie-Hellman Group Exchange) で 使われる、Diffie-Hellman 群を格納します。 このファイルの形式は .Xr moduli 5 で説明されています。 .Pp .It /etc/motd .Xr motd 5 を参照してください。 .Pp .It /etc/nologin このファイルが存在していると、 .Nm は root を除くすべてのユーザのログインを拒否します。 このファイルの内容は root 以外で ログインしようとして拒否された人に対して表示されます。この ファイルは誰にでも読めるようになっている必要があります。 .Pp .It /etc/shosts.equiv これは .Pa hosts.equiv とまったく同じように扱われます。 しかしこれは rlogin/rsh から使われることなく ホストベースド認証を許可することができます。 .Pp .It /etc/ssh/ssh_host_key .It /etc/ssh/ssh_host_dsa_key .It /etc/ssh/ssh_host_rsa_key これら 3 つのファイルはホストの秘密鍵を格納します。 このファイルは root が所有し、 root だけが読み込み可能にすべきであり、 これ以外の誰にも読ませてはいけません。 .Nm はこのファイルが誰にでも読めるようになっていると 起動しないので注意してください。 .Pp .It /etc/ssh/ssh_host_key.pub .It /etc/ssh/ssh_host_dsa_key.pub .It /ssh/etc/ssh_host_rsa_key.pub これら 3 つのファイルはホスト鍵の公開鍵部分を格納します。 このファイルは誰にでも読めるようになっている 必要がありますが、 書き込めるのは root だけにしてください。 この内容は秘密鍵のファイルと対応しています。 このファイルが実際に使われることはありません。 これは単にユーザの便宜をはかるためだけに存在し、 ユーザはこれを known_hosts ファイルにコピーする ことができます。これら 2 つのファイル (秘密鍵と公開鍵) は .Xr ssh-keygen 1 を使って生成することができます。 .Pp .It /etc/ssh/ssh_known_hosts システム全体で使われるホスト鍵の一覧です。 このファイルはシステム管理者によって用意され、 その組織のすべてのマシンのホスト鍵を含んでいるべきです。 このファイルの形式は上で説明されています。 これらのファイルは root や所有者にのみ 書き込み可能にしておくべきであり、 誰にでも読めるようになっている必要があります。 .Pp .It /etc/ssh/sshd_config .Nm sshd の設定ファイルです。 このファイルの形式と設定項目は .Xr sshd_config 5 で説明されています。 .Pp .It /etc/ssh/sshrc .Pa ~/.ssh/rc に似ています。これはそのマシン全体にわたって ログイン時の初期化を指定するのに使われます。これは root のみ書き込み可能にしておき、 誰からも読めるようにしておくべきです。 .Pp .It Pa /var/empty .Nm が特権分離の際に、認証前の段階で使用する .Xr chroot 2 用のディレクトリです。 このディレクトリはどんなファイルも含んでいてはならず、 所有者は root で、他の人あるいはグループが 書きこめるようになっていてはいけません。 .Pp .It Pa /var/run/sshd.pid 現在、接続を受けつけている .Nm のプロセス ID が入っています (複数の .Nm が異なるポートで走っているときは、 最後に開始したプロセスの ID が入ります)。 このファイルの内容は機密事項ではなく、 誰でも読めるようにしてかまいません。 .El .Sh 関連項目 .Xr scp 1 , .Xr sftp 1 , .Xr ssh 1 , .Xr ssh-add 1 , .Xr ssh-agent 1 , .Xr ssh-keygen 1 , .Xr ssh-keyscan 1 , .Xr chroot 2 , .Xr hosts_access 5 , .Xr login.conf 5 , .Xr moduli 5 , .Xr sshd_config 5 , .Xr inetd 8 , .Xr sftp-server 8 .Sh 作者 OpenSSH は Tatu Ylonen による、フリーな オリジナル版 ssh 1.2.12 リリースから派生したものです。 Aaron Campbell、 Bob Beck、 Markus Friedl、 Niels Provos、 Theo de Raadt および Dug Song が多くのバグを取り除き、 新しい機能をふたたび追加して OpenSSH をつくりました。 SSH プロトコル バージョン 1.5 および 2.0 のサポートは Markus Friedl の貢献によるものです。 Niels Provos および Markus Friedl が特権分離のサポートに 貢献しました。 .Sh 警告 .Nm rshd 、 .Nm rlogind 、 および .Nm rexecd を禁止しないかぎり (つまりこれは .Xr rlogin および .Xr rsh でそのマシンにログインすることを 完全に禁止することになります)、 システムのセキュリティは改善されませんので 注意してください。