EN JA
SSHD(8)
SSHD(8) FreeBSD System Manager's Manual SSHD(8)

名称

sshdOpenSSH SSH デーモン

書式

sshd [ -46DdeiqTt][ -b  bits][ -C  connection_spec][ -c  host_certificate_file][ -E  log_file][ -f  config_file][ -g  login_grace_time][ -h  host_key_file][ -k  key_gen_time][ -o  option][ -p  port][ -u  len]

解説

sshd (OpenSSH デーモン) は、 ssh(1) のためのデーモンプログラムです。これらのプログラムは、ともに rlogin(1)rsh(1) を置き換え、安全でないネットワーク上で 2 つの信頼されていないホスト間の安全な暗号化通信を提供します。

sshd は、クライアントから接続を listen します。通常これは、ブート時に /etc/rc.d/sshd から起動され、接続を受けつけるたびに新しいデーモンが fork します。 fork したデーモンは、鍵の交換、暗号化、認証、コマンド実行、そしてデータ交換をおこないます。

コマンドラインオプションまたは設定ファイル (デフォルトでは、 sshd_config(5)) を使用して sshd を設定することができます。コマンドラインからのオプションは、設定ファイルで指定されている値よりも優先されます。 sshd は、ハングアップシグナル SIGHUP を受け取ると、自分の設定ファイルを読み込みなおします。これは、自分自身を開始したときのパス名 /usr/sbin/sshd を exec することによっておこないます。

オプションは、次の通りです:

-4
sshd が、IPv4 アドレスのみを使用することを強制します。
-6
sshd が、IPv6 アドレスのみを使用することを強制します。
-b bits
プロトコルバージョン 1 で短期的に使われるサーバ鍵のビット数を指定します (デフォルトは、1024 です)。
-C connection_spec
-T 拡張テストモードを使用するための接続パラメータを指定します。提供されるなら、設定が標準出力に書き込まれる前に、指定されたユーザ、ホスト、とアドレスに適用される設定ファイルの任意の Match 指示は、設定されます。接続パラメータは、keyword=value の組で提供されます。キーワードは、“user”, “host”, “laddr”, “lport”と“addr”です。すべてが必要であり、複数の -C オプション、または、コンマで区切られたリストとして、順不同で供給されます。
-c host_certificate_file
鍵交換の間に、 sshd を識別する証明書ファイルのパスを指定します。証明書ファイルは、 -h オプションまたは HostKey 設定指示を使用して指定されるホスト鍵ファイルにマッチしなければなりません。
-D
このオプションが指定されると sshd は、切り離し (detach) をおこなわず、デーモンにはなりません。これは、 sshd の監視を簡単にします。
-d
デバッグモードにします。サーバは、標準エラーに対し、冗長なデバッグ表示を出力するようになり、バックグラウンドには移行しません。またサーバは、fork せず、1 回の接続しか受けつけません。このオプションは、サーバのデバッグのためだけに用意されています。複数の -d オプションをつけるとデバッグレベルが上がります。最高は、3 です。
-E log_file
Append debug logs to log_file instead of the system log.
-e
このオプションが指定されると、 sshd は、出力を syslog のかわりに標準エラー出力に送ります。 Write debug logs to standard error instead of the system log.
-f config_file
設定ファイルの名前を指定します。デフォルトは、 /etc/ssh/sshd_config になっています。 sshd は、設定ファイルがないと起動しません。
-g login_grace_time
クライアントが自分自身を認証するのにかかる猶予時間を与えます (デフォルトは、120 秒)。クライアントがこの時間内にユーザを認証できなかった場合、サーバは、接続を切って終了します。 0 を値として与えると猶予は、無限になります。
-h host_key_file
ホスト鍵を読むファイルを指定します。このオプションは、 sshd を root 以外で起動するときは必ず指定しなければいけません (ホスト鍵のファイルは、ふつう root からしか読めないようになっているからです)。デフォルトで、プロトコルバージョン 1 用の鍵は、 /etc/ssh/ssh_host_key であり、プロトコルバージョン 2 用の鍵は、 /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key/etc/ssh/ssh_host_rsa_key です。異なるバージョンのプロトコルやホスト鍵の方式に対し、複数のホスト鍵ファイルを指定することも可能です。
-i
sshdinetd(8) から起動されることを指定します。 sshd は、ふつう inetd からは起動されません。なぜならこれは、クライアントを受けつける前にサーバ鍵を生成しておく必要があり、これには、数十秒かかるためです。鍵が毎回生成しなおされると、クライアントは、非常に長い間待たされてしまいます。しかし鍵のサイズが小さければ (たとえば 512 ビットぐらい)、inetd から sshd を使うことも可能でしょう。
-k key_gen_time
サーバ鍵がどれくらいの間隔で再生成されるかを指定します (デフォルトでは、3600 秒、つまり 1 時間ごとになっています)。こんなに頻繁に鍵を再生成するのは、以下のような理由によります。この鍵は、どこにも格納されません。そのため、このようにしておくとたとえマシンがクラックされたり物理的に乗っ取られたりしても、 1 時間後には、盗聴した通信を解読して鍵を見つけることは不可能になります。この値として 0 を指定すると、鍵は、まったく再生成されなくなります。
-o option
設定ファイルと同じ形式でオプションを与えたいときに使用します。これは、コマンドラインオプションでは、指定できないオプションを指定したいときに便利です。オプションの詳細と、これらがとりうる値については、 sshd_config(5) を参照してください。
-p port
サーバが接続を受けつける (listen する) ポート番号を指定します (デフォルトは、22 です)。複数のポートオプションを指定することも可能です。コマンドラインのポートが指定されるとき、設定ファイルの Port オプションで指定されたポートは、無視されます。 ListenAddress オプションを使用して指定されたポートは、コマンドラインのポートに優先します。
-q
静かなモード。ふつう、 sshd は、接続の開始と認証および終了を syslog に残します。このオプションを指定すると syslog には何も残りません。
-T
拡張テストモード。設定ファイルの正当性をチェックし、有効な設定を stdout に出力して、終了します。オプションで、 Match 規則は、1 つ以上の -C オプションを使用して接続パラメータを指定することによって、適用されます。
-t
テストモード。設定ファイルや鍵の正当性チェックだけをおこないます。これは、設定ファイル項目を変更した際に、 sshd を安全に更新するのに便利です。
-u len
このオプションは、リモートホスト名を保持させる utmp 構造体のフィールド長を指定するのに使われます。名前解決されたホストがこの len よりも長い場合、ドットで区切られた 10 進の数値がかわりに保持されます。これは、非常に長いホスト名をもつホストがこのフィールドをあふれさせても、一意に識別できるようにするためです。 -u0 を指定すると utmp ファイルには、つねにドットで区切られた 10 進値が使われるようになります。また -u0 は、 sshd が DNS 要求をおこなわないようにするのにも使われるかもしれません。ただし設定ファイルや認証メカニズムでこれが必要とされた場合は、この限りではありません。 DNS を要求する可能性のある認証メカニズムは、 RhostsRSAAuthentication, HostbasedAuthenticationfrom="pattern-list" オプションを使った鍵ファイルです。 DNS を必要とする設定オプションには、 AllowUsers または DenyUsers で使われている USER@HOST のパターンも含まれますので注意してください。

認証

OpenSSH SSH デーモンは、SSH プロトコル 1 と 2 をサポートします。デフォルトは、プロトコル 2 だけを使用することですが、 sshd_config(5)Protocol オプションで変更することができます。プロトコル 2 は、RSA、ECDSA と DSA 鍵をサポートしています。プロトコル 1 は、RSA 鍵のみサポートします。両方のプロトコルでは、各ホストは、ホストを識別するために使用する通常 2048 ビットのホスト特有の鍵を持っています。

プロトコル 1 のための forward security (訳注: 将来、鍵が破られても現在の通信の秘匿性が保たれる特性) は、通常サーバが開始されるとき生成される 768 ビットの追加サーバ鍵によって提供されます。この鍵は、それが使用されたなら、通常、毎時間ごとに再生成され、ディスクには、決して保存されません。クライアントが接続するときはいつも、デーモンは、そのホストの公開鍵とサーバ鍵で応答します。クライアントは、鍵が変更されていないことを検証するために RSA ホスト鍵とそれ自体のデータベースを比較します。次に、クライアントは、256 ビットの乱数を生成します。ホスト鍵とサーバ鍵の両方を使用して、この乱数を暗号化して、暗号化された数値をサーバに送信します。そして、サーバとクライアントは、セッションでさらにすべての通信を暗号化するために使用されるセッション鍵としてこの乱数を使用します。セッションの残りは、従来の暗号、現在の Blowfish または 3DES を使用して暗号化され、3DES がデフォルトで使用されます。クライアントは、サーバによって提供されたものから使用する暗号化アルゴリズムを選択します。

プロトコル 2 のためには、 forward security は、Diffie-Hellman 鍵共有によって提供されています。この鍵共有は、共有されたセッション鍵をもたらします。セッションの残りは、現在 128 ビットの AES、Blowfish、3DES、CAST128、Arcfour、 192 ビットの AES、または 256 ビットの AESの共通暗号を使用して暗号化されます。クライアントは、サーバによって提供されたものから使用する暗号化アルゴリズムを選択します。さらに、セッションの整合性は、暗号のメッセージ認証コード (hmac-md5, hmac-sha1, umac-64, umac-128, hmac-ripemd160, hmac-sha2-256 or hmac-sha2-512) によって提供されています。

最終的に、サーバとクライアントは、認証対話 (dialog) に入ります。クライアントは、ホストベースド認証 (host-based authentication)、公開鍵認証 (public key authentication)、チャレンジレスポンス認証 (challenge-response authentication)、またはパスワード認証 (password authentication) を使用してそれ自体を認証しようと試みます。

認証タイプにかかわらず、アカウントは、アクセス可能か確かめるためにチェックされます。アカウントがロックされているか、 DenyUsers にリストされているか、またはそのグループが DenyGroups にリストされているなら、アカウントは、アクセスできません。ロックされたアカウントの定義は、システムに依存しています。いくつかのプラットフォームには、それら自身のアカウントデータベース (例 AIX) があり、passwd フィールドをいくらか変更しています (Solaris と UnixWare では、‘ *LK*’、HP-UX では、‘ *’、Tru64 では、‘ Nologin’を含み、 FreeBSD では、先行する‘ *LOCKED*’とほとんどの Linux では、先行する‘ !’)。いまだに公開鍵を許可しているアカウントのためのパスワード認証を無効にする要求があるなら、passwd フィールドは、これら以外の値 (例えば、‘ NP’または‘ *NP*’) の何かに設定されるべきです。

クライアントそれ自体の認証が成功するなら、セッションを準備するための対話に入ります。現時点では、クライアントは、疑似 tty の割り付け、X11 接続の転送、 TCP 接続の転送、または安全なチャネルを介して認証エージェント接続の転送のようなものを要求することができます。

この後、クライアントは、シェルを要求するか、またはコマンドを実行します。次に、両側は、セッションモードを入ります。このモードでは、どちらの側もいつでもデータを送信することができ、そのようなデータは、サーバ側では、シェルまたはコマンドの間で、クライアント側では、ユーザ端末の間で転送されます。

ユーザのプログラムが終了し、すべての転送された X11 と他の接続がクローズされたとき、サーバは、コマンド終了状態をクライアントに送信し、両側は、終了します。

ログインプロセス

ユーザがログインに成功すると、 sshd は、次のことを行います:
  1. ユーザが端末にログインしており、コマンドがとくに指定されていない場合、 (設定ファイルまたは ~/.hushlogin で禁止されていなければ。 「関連ファイル」 セクション参照) 前回のログイン時刻と /etc/motd を印刷 (表示) します。
  2. ユーザが端末にログインしている場合、ログイン時刻を記録する。
  3. /etc/nologin/var/run/nologin をチェックする。これが存在する場合、その内容を表示して終了する (root 以外)。
  4. そのユーザの通常の権限に移行する。
  5. 基本的な環境変数を設定する。
  6. ~/.ssh/environment ファイルが存在していて、ユーザの環境変数を変更することが許されていれば、それを読み込む。 sshd_config(5)PermitUserEnvironment 設定項目を参照のこと。
  7. ユーザのホームディレクトリに移動する。
  8. ~/.ssh/rc が存在する場合、それを実行する。そうでなければ、もし /etc/ssh/sshrc が存在しているなら、それを実行する。これ以外の場合は、 xauth(1) を実行する。“rc”ファイルには、標準入力で X11 認証プロトコルとクッキーが与えられます。下記の 「SSHRC」 を参照してください。
  9. ユーザのシェルまたはコマンドを実行する。

SSHRC

ファイル ~/.ssh/rc が存在しているなら、環境ファイルを読み込んだ後で、ユーザのシェルまたはコマンドを開始する前に、 sh(1) は、それを実行します。そのスクリプトは、標準出力 (stdout) に何も出力してはいけません。代わりに標準エラー (stderr) を使用しなければなりません。 X11 転送が使用中であるなら、標準入力 (と、環境変数の DISPLAY) で "proto クッキー"の組を受け付けます。 sshd が X11 クッキーを追加するために xauth を自動的に実行しないので、スクリプトは、 xauth(1) を呼び出さなければなりません。

このファイルの主要な目的は、ユーザのホームディレクトリがアクセス可能となる前に必要な何らかの初期化ルーチンを実行することです。 AFS は、そのような環境の特有の例です。

このファイルは、たぶん次と同様のものが後に続く何らかの初期化コードを含むでしょう:

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

このファイルが存在していないなら、 /etc/ssh/sshrc が実行され、それも存在していないなら、xauth が、クッキーを追加するために使用されます。

authorized_keys ファイルの形式

AuthorizedKeysFile は、公開鍵認証のための公開鍵を含む (複数の) ファイルを指定します。なにも指定されていないなら、デフォルトは、 ~/.ssh/authorized_keys~/.ssh/authorized_keys2 です。このファイルには、各行にひとつの鍵が格納されています (空行や‘ #’で始まる行は、コメントとして無視されます)。プロトコル 1 の公開鍵は、次のの空白で区切られたフィールドから成ります: オプション、ビット、指数、係数 (modulus)、コメント。プロトコル 2 の公開鍵は、次から成ります: オプション、鍵の種類 (keytype)、base64 でエンコードされた鍵、コメント。オプションフィールドは、省略可能です。オプションが存在するかどうかは、この行が数字またはピリオドで始まるかどうかによって決定されます (オプションフィールドは、決して数字では始まりません)。プロトコルバージョン 1 では、RSA 鍵は、ビット数、指数およびモジュロによって表されます。コメント欄は、利用されません (が、鍵を区別するのに役立ちます)。プロトコルバージョン 2 では、鍵の種類は、“ecdsa-sha2-nistp256”, “ecdsa-sha2-nistp384”, “ecdsa-sha2-nistp521”, “ssh-dss”または“ssh-rsa”です。

これらのファイルでは、通常 1 行が何百バイトもの長さになっていることに注意してください (これは、公開鍵の係数のサイズが大きいためです)。 DSA 鍵の長さの制限は、最大 8 キロバイトで、RSA 鍵の最大は、16 キロバイトです。これを手でタイプする気にはならないでしょう。代わりに identity.pub, id_dsa.pub, id_ecdsa.pub または id_rsa.pub ファイルをコピーして、それを編集してください。

sshd では、プロトコル 1 とプロトコル 2 の両方で、 RSA 鍵の長さが少なくとも 768 ビット以上である必要があります。

(もしあれば) オプションは、コンマで区切られたオプション指定から成ります。二重引用符 (ダブルクォート) を除いて、空白は、許されません。次のオプションがサポートされています (これらのキーワードは、大文字小文字を区別しません):

cert-authority
リストされた鍵がユーザ認証のために署名された証明書を有効にするために信頼される認証機関 (CA) であると指定します。

証明書は、これらの鍵のオプションと同様にアクセス制限をエンコードします。証明書制限と鍵のオプションの両方が存在しているなら、2 つの最も制限している結合 (union) が適用されます。

command="command"
このオプションを使うと、認証にこの鍵が使われたときは必ずここで指定されたコマンドが実行されるようになります。ユーザが (訳注: クライアント側で) 指定したコマンドは、無視されます。クライアント側が仮想端末を要求していれば、ここで指定されたコマンドは、仮想端末上で実行されます。そうでなければ端末なしで実行されます。 8-bit クリーンな通信が欲しい場合は、仮想端末を要求してはいけません。または no-pty オプションを使ってください。コマンド文字列中に引用符 (") を入れたいときは、バックスラッシュを前につけてください。このオプションは、ある公開鍵には、特定の操作だけしかさせないようにするのに有効です。例として、リモートバックアップだけをさせて、それ以外な何もさせないような鍵がつくれます。クライアントの TCP や X11 転送は、明示的に禁止されていない限り可能なので注意してください。クライアントによって元々供給されたコマンドは、 SSH_ORIGINAL_COMMAND 環境変数で利用可能です。このオプションは、シェル、コマンドまたはサブシステムの実行に適用されることに注意してください。また、証明書に埋め込まれた sshd_config(5) ForceCommand 指示またはコマンドのいずれかによってこのコマンドが取って代わられることに注意してください。
environment="NAME=value"
認証にこの鍵が使われたとき、環境変数に追加される文字列を指定します。このやりかたで指定した環境変数は、デフォルトの環境変数の値を上書きします。このオプションは、複数指定することも可能です。環境変数の変更は、デフォルトでは禁止されており、これを許可するには、 PermitUserEnvironment を設定する必要があります。 UseLogin を使っているときは、このオプションは、自動的に禁止されます。
from="pattern-list"
公開鍵認証に加えて、リモートホストの標準の名前か、またはその IP アドレスのどちらかが、パターンのコンマで区切られたリストに存在していなければならないことを指定します。パターンの詳細については、 ssh_config(5) の「パターン」を参照してください。

ホスト名またはアドレスに適用されるワイルドカードマッチングに加えて、 from 節 (stanza) は、CIDR address/masklen 記法を使用して IP アドレスとマッチします。

このオプションの目的は、状況に応じてセキュリティを向上することです: それ自体による公開鍵認証は、(鍵を除いて) ネットワーク、ネームサーバまたはその他のものを信用しません。しかしながら、誰かがどうにかして鍵を盗んだなら、その鍵で、侵入者が世界のどこからでもログインすることを可能にします。この追加オプションで、盗まれた鍵を使用することをより難しくします (単にその鍵に加えて、ネームサーバ、および、ルータを脆弱にしなければならなりません)。

no-agent-forwarding
この鍵が認証に使用されるとき、認証エージェントの転送を禁止します。
no-port-forwarding
認証にこの鍵が使われたときは、TCP 転送が禁止されます。クライアントがポート転送を要求しても、すべてエラーになります。これは、たとえば command オプションの指定されている接続などで使われます。
no-pty
tty の割り付けを抑制します (pty を割り付ける要求は、失敗します)。
no-user-rc
~/.ssh/rc の実行を無効にします。
no-X11-forwarding
認証にこの鍵が使われたときは、X11 転送が禁止されます。クライアントが X11 転送を要求しても、すべてエラーになります。
permitopen="host:port"
ローカルな ``ssh -L'' のポート転送先を、指定されたホストの指定されたポートのみに限定します。角括弧でアドレスを囲むことによって、IPv6 アドレスを指定することができます。 permitopen オプションは、コンマで区切って複数指定することもできます。パターンマッチングは、おこなわれません。ホスト名には、ドメイン名かアドレスをそのまま書く必要があります。 * のポート指定は、あらゆるポートと一致します。
principals="principals"
cert-authority 行において、コンマで区切られたリストとして証明書の認証のために許可されたプリンシパルを指定します。リストから少なくとも 1 つの名前が受け付けられる証明書のためにプリンシパルの証明書のリストに現れなければなりません。このオプションは、 cert-authority オプションを使用する信頼されている証明書の署名者としてマークされない鍵に対して無視されます。
tunnel="n"
サーバに tun(4) デバイスを強制します。このオプションがなければ、クライアントがトンネルを要求するなら、次の利用可能なデバイスを使用します。

authorized_keys ファイルの例:

# コメントは, 行の始めだけ許可されます 
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

ssh_known_hosts ファイルの形式

/etc/ssh/ssh_known_hosts~/.ssh/known_hosts の各ファイルは、今までに知られているホストの公開鍵をすべて格納しています。システム用の known_hosts ファイル (大域的 known_hosts ファイル) は、管理者によって用意され (必須ではありません)、ユーザ用の known_hosts ファイルは、自動的に更新されます。これは、ユーザがまだ知られていないホストに接続すると、そのホスト鍵が自動的にユーザ用 known_hosts ファイルに追加されるようになっています。

これら known_hosts ファイルの各行は、次のようなフィールドからなっています: マーカ (オプション)、ホスト名、ビット数、指数、係数、そしてコメント。各フィールドは、スペースによって区切られています。

マーカは、オプションですが、それが存在するなら、行が認証機関 (CA) 鍵を含むことを示すために“@cert-authority”、または行に含まれている鍵が取り消されることを示すために、“@revoked”の 1 つでなけれはなりません、そして、決して、受け付けてはいけません。 1 つのマーカだけが、鍵の行で使用されるべきです。

ホスト名は、コンマで区切られたパターン列です (‘ *’と‘ ?’は、ワイルドカードとして使われます)。各パターンは、(クライアントを認証しているときは) 順にそのホストの正式名と比較されるか、または (サーバを認証しているときは) ユーザが与えた名前と比較されます。パターンの先頭に‘ !’をつけると「〜でない」という否定 (negation) の意味になります。否定されたパターンにマッチしたホストは、たとえその行の他のパターンにマッチしても (その行では) 受けつけられません。ホスト名またはアドレスは、オプションで‘ [’と‘ ]’角括弧で囲み、‘ :’と標準でないポート番号を続けることができます。

または、各ホストは、ハッシュされた形式で格納されていることもあります。これは、万が一そのファイルが見られた時でも、そのホスト名と IP アドレスが識別できないようにするためです。ハッシュされたホスト名は、‘ |’文字から始まります。各行は、ハッシュされたホスト名をひとつだけ持ち、これらに上記の否定表現やワイルドカード演算子を適用することはできません。

ビット数、指数および係数は、RSA ホスト鍵から直接取り込まれます。たとえばこれらは、 /etc/ssh/ssh_host_key.pub などから取得されます。オプションのコメントフィールドは、行末まで続き、これは、無視されます。

#’で始まる行および空行は、コメントとして無視されます。

ホスト認証を実行するとき、マッチする行に適切な鍵があるなら、認証は、受け付けられます。正確にマッチするもの、またはサーバが認証のための証明書を提示するなら、証明書に署名された認証機関の鍵のいずれかです。鍵が認証機関として信頼されるために、上で説明された“@cert-authority”マーカを使用しなければなりません。

また、known host ファイルは、例えば、関連秘密鍵が盗まれたことが知られるとき、取り消される鍵をマークするための機能を提供しています。取り消される鍵は、鍵の行の始めで“@revoked”マーカをを含むことによって、指定され、認証のため、または認証機関として決して受け付けられませんが、それらに遭遇するとき、代わりに ssh(1) から警告を生成します。

同じ名前のためにいくつかの行または異なったホスト鍵を持つことは許可されています (しかし、推薦されません)。異なったドメインにあるホスト名の短縮形がひとつのファイルにまとめられているときは、これは、仕方がないでしょう。また、これらのファイルには、矛盾する情報が書かれていることもあり得ます。その場合は、どれかのファイルに正しい情報が書いてあれば認証は、受け入れられます。

注意。これらのファイルの各行は、ふつう何百文字もの長さになっています。もちろんこんなホスト鍵を手で入力したくはないでしょう。かわりにスクリプト ssh-keyscan(1) で生成するか、 /etc/ssh/ssh_host_key.pub をとってきてその先頭にホスト名をつけ加えるかしてください。また、 ssh-keygen(1) は、ホスト名にマッチするホストを削除し、それらのハッシュされた彼表現にすべてのホスト名を変換することを含む ~/.ssh/known_hosts のためにいくつかの基本的な自動化された編集を提供します。

ssh_known_hosts ファイルの例:

# コメントは, 行の始めだけ許可されます 
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.....= 
# A revoked key 
@revoked * ssh-rsa AAAAB5W... 
# A CA key, accepted for any host in *.mydomain.com or *.mydomain.org 
@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...

関連ファイル

~/.hushlogin
このファイルがあると、 PrintLastLogPrintMotd がそれぞれ許可されている場合でも最終ログイン時刻と /etc/motd ファイルの表示はされなくなります。しかし Banner によって指定されているバナーを非表示にすることはしません。

~/.rhosts
このファイルは、ホストベースド認証に使用されます (詳細については、 ssh(1) を参照してください)。いくつかのマシンでは、ユーザのホームディレクトリが NFS パーティションにあるなら、 sshd が、root として読み込むので、このファイルは、すべての人に読み込み可能である必要がります。さらに、このファイルは、ユーザが所有していなければならなくて、他の誰のためにも書き込みパーミッションがあってはなりません。ほとんどのマシンのためにお勧めのパーミッションは、ユーザが、読み込み書き込み可能で、他のものによるアクセス不可です。

~/.shosts
このファイルは、まさに .rhosts と同じように使用されますが、 rlogin/rsh でのログインを許さず、ホストベースド認証を許可します。

~/.ssh/
このディレクトリは、すべてのユーザ特有の設定と認証情報のためのデフォルト位置です。このディレクトリの全体の内容を秘密にするという一般的な要件は、ありませんが、お勧めのパーミッションは、ユーザのために read/write/execute (読み込み/書き込み/実行)で、他のものによるアクセスを不可能とすることです。

~/.ssh/authorized_keys
このユーザとしてログインするために使用することができる公開鍵 (DSA/ECDSA/RSA) のリストです。このファイルの形式は、上で説明されています。ファイルの内容は、大変神経をとがらせる必要はありませんが、お勧めのパーミッションは、ユーザのために読み込み書き込み可能で、他のものには、アクセス不可です。

このファイル、 ~/.ssh ディレクトリ、またはユーザのホームディレクトリが他のユーザによって書き込み可能であるなら、このファイルは、権限のないユーザによって変更されるか、または置き換えられるかもしれません。この場合は、 StrictModes オプションが“no”に設定されていななら、 sshd は、それが使用されることを許可しません。

~/.ssh/environment
このファイルは、(存在していれば) ログイン時に環境変数に読み込まれます。これが含んでいてよいのは、空行、コメント行 (‘ #’で始まる)、および ``変数名=値'' の形式の代入行だけです。このファイルは、そのユーザにのみ書き込み可能にしておいてください。べつに他人が読めるようにしておく必要もありません。環境変数の変更は、デフォルトでは、禁止されており、これを許可するには、 PermitUserEnvironment を設定する必要があります。

~/.ssh/known_hosts
知られているホスト鍵のシステム全体のリストでまだ含まれていない、ユーザがこれまでログインしたすべてのホストのためのホスト鍵のリストを含んでいます。このファイルの形式は、上で説明されています。このファイルは、root と所有者のみ書き込み可能であるべきですが、すべての人に読み込み可能である必要はありません。

~/.ssh/rc
ユーザのホームディレクトリがアクセス可能となる前に、実行される初期化ルーチンを含んでいます。このファイルは、ユーザによってのみ書き込み可能であるべきで、他の誰でも読み込み可能である必要はありません。

/etc/hosts.allow
/etc/hosts.deny
tcp-wrapper によって実行されるべきであるアクセス制御がここで定義されています。詳細は、 hosts_access(5) で説明されています。

/etc/hosts.equiv
このファイルは、ホストベースド認証のためのものです ( ssh(1) 参照)。それは、root によってのみ書き込み可能であるべきです。

/etc/moduli
"Diffie-Hellman 群交換 (Group Exchange)"に使用される Diffie-Hellman 群を含んでいます。ファイル形式は、 moduli(5) に記述されています。

/etc/motd
motd(5) を参照してください。

/etc/nologin
このファイルが存在しているなら、 sshd は、root を除いてすべてのユーザのログインを拒否します。ログインしようとするすべてのユーザにファイルの内容を表示し、 root 以外の接続を拒絶します。ファイルは、すべての人に読み込み可能であるべきです。

/etc/shosts.equiv
このファイルは、まさに hosts.equiv と同じように使用されますが、 rlogin/rsh でのログインを許さず、ホストベースド認証を許可します。

/etc/ssh/ssh_host_key
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_rsa_key
これらのファイルは、ホスト鍵の秘密部分を含んでいます。これらのファイルは、root によってのみ所有され、root によってのみ読み込み可能で、他のユーザには、アクセス不可能であるべきです。これらのファイルがグループでアクセス可能、または全ての人がアクセス可能であるなら sshd は、起動しないことに注意してください。

/etc/ssh/ssh_host_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_rsa_key.pub
これらのファイルは、ホスト鍵の公開部分を含んでいます。これらのファイルは、全ての人に読み込み可能ですが、root によってのみ書き込み可能であるべきです。それらの内容は、それぞれの秘密部分に適合するべきです。これらのファイルは、実際に何にも使用されません。それらは、known hosts ファイルにそれらの内容をコピーすることができるよう、ユーザの利便性のために提供されています。これらのファイルは、 ssh-keygen(1) を使用して作成されます。

/etc/ssh/ssh_known_hosts
知られているホスト鍵のシステム全体リストです。このファイルは、組織内のすべてのマシンの公開ホスト鍵を含むようにシステム管理者によって準備されるべきです。このファイルの形式は、上で説明されます。このファイルは、root と所有者のみのよって書き込み可能であるべきで、すべての人に読み込み可能であるべきです。

/etc/ssh/sshd_config
sshd のための設定データを含んでいます。ファイル形式と設定オプションは、 sshd_config(5) で説明されています。

/etc/ssh/sshrc
~/.ssh/rc と同様で、マシン特有の全体的なログイン時間の初期化処理を指定するために使用することができます。このファイルは、root によって書き込み可能で、すべての人に読み込み可能であるべきです。

/var/empty
前認証フェーズで特権分離の間に sshd によって使用される chroot(2) ディレクトリ。このディレクトリは、どんなファイルも含むべきでなく、root によって所有され、グループまたはすべての人に書き込み可能であってはなりません。

/var/run/sshd.pid
接続のために (同時に異なったポートで実行されるいくつかのデーモンがあるなら、最後に開始されたプロセス ID を含んでいます) listen している sshd のプロセス ID を含んでいます。このファイルの内容は、神経をとがらせるものではありません。すべての人に読み込み可能とすることができます。

作者

OpenSSH は、Tatu Ylonen によってリリースされたオリジナルのフリーな ssh 1.2.12 の派生物です。 Aaron Campbell、Bob Beck、Markus Friedl、Niels Provos、 Theo de Raadt と Dug Song は、多くのバグを取り除き、新しい機能を再び追加し、OpenSSH を作成しました。 Markus Friedl は、SSH プロトコルバージョン 1.5 と 2.0 のためのサポートを寄贈しました。 Niels Provos と Markus Friedl は、特権分離のためのサポートを寄贈しました。

警告

システムの安全性は、 rshd, rlogindrexecd が無効にされていなければ、改善されません (したがって、マシンへの rloginrsh を完全に無効にされます)。
June 27, 2013 FreeBSD