OpenSSH-5.6p1 日本語マニュアルページ (2010/08/27)
OpenSSH SSH デーモン 設定ファイル
/etc/ssh/sshd_config
/etc/ssh/sshd_config(あるいはコマンドラインから-f オプションで指定したファイル) から設定を読み込みます。このファイルの各行は"キーワード 引数"の形式になっており、空行あるいは # で始まる行はコメントとみなされます。空白を含む引数はダブルクォート使用できるキーワードとその説明は以下の通りです(キーワードでは大文字小文字は区別されませんが、引数では区別されることに注意してください):
AcceptEnv (受け付ける環境変数)SendEnv項目を参照してください。環境変数の受け渡しはプロトコル バージョン 2 でのみサポートされています。環境変数は名前で指定します。名前にはワイルドカード文字 * または ? を含むことができます。複数の環境変数を指定する場合は空白文字で区切るか、あるいは複数のAcceptEnv項目を指定します。警告: いくつかの環境変数は、制限つきの環境 (restricted environment) を迂回するのに使われることがあります。このため、この設定項目を利用する場合は細心の注意を払ってください。デフォルトでは、いかなる環境変数も受け渡しできないようになっています。AddressFamily (アドレスファミリ)AllowAgentForwardingAllowGroups (許可するグループ)DenyUsers 、AllowUsers 、DenyGroups 、そして最後にAllowGroups 。
パターンに関する詳細はssh_config (5) のパターンの項を参照してください。
AllowTcpForwarding (TCP 転送の許可)AllowUsers (許可するユーザ)DenyUsers 、AllowUsers 、DenyGroups 、そして最後にAllowGroups 。
パターンに関する詳細はssh_config (5) のパターンの項を参照してください。
AuthorizedKeysFile (authorized_keys ファイル)AuthorizedKeysFileのファイル名中に %T が含まれている場合、その部分は接続の間別のものに置換されます。%% は「%」1文字に置換されます。%h は認証しようとしているユーザのホームディレクトリに置換され、%u はそのユーザのユーザ名に置換されます。この後、その絶対パスあるいはユーザのホームディレクトリからの相対パスがAuthorizedKeysFileに渡されます。デフォルトでの値は".ssh/authorized_keys"となっています。AuthorizedPrincipalsFile (許可されるprincipalファイル)TrustedUserCAKeysで指定されている鍵によって署名された証明書を使う場合、このファイルには名前の一覧が入ります。これらの名前は証明書の中で認証を許可されていなければなりません。名前は各行にひとつずつ書き、そのあとに鍵のオプション(sshd (8)
のAUTHORIZED_KEYS ファイルの形式で説明されているもの) を書きます。空行、あるいは # で始まる行は無視されます。
AuthorizedPrincipalsFileのファイル名中に %T が含まれている場合、その部分は接続の間別のものに置換されます。%% は「%」1文字に置換されます。%h は認証しようとしているユーザのホームディレクトリに置換され、%u はそのユーザのユーザ名に置換されます。この後、AuthorizedPrincipalsFileの値は、絶対パスあるいはユーザのホームディレクトリからの相対パスとして解釈されます。
nこの場合、認証が受け入れられるには、そのユーザ名が証明書の principal 一覧に記されている必要があります。注意:AuthorizedPrincipalsFileが使われるのは、TrustedUserCAKeysに記されている CA を使って認証を進めるときだけです。~/.ssh/authorized_keysで信用されている CA は使われません。しかし、鍵のオプションであるprincipals=を使えば、同様の効果を得ることはできます (詳しくはsshd (8)
を参照してください)。
Banner (バナー)ChallengeResponseAuthentication (チャレンジ・レスポンス認証)ChrootDirectory (chrootディレクトリ)このパス名には、以下のトークンを含むことができます。これらは接続してきたユーザが認証を完了したあと、ランタイムで内容が展開されます: %% は '%' 1文字になり、%h は認証したユーザのホームディレクトリに展開されます。また、%u は認証したユーザの名前に展開されます。
ChrootDirectory以下の場所には、そのユーザのセッションをサポートするための必要なファイルおよびディレクトリが入っている必要があります。対話的セッションの場合、これは少なくともひとつのシェル、通常はsh (1)
および、以下の基本的な/devノード、null (4),
zero (4),
stdin (4),
stdout (4),
stderr (4),
arandom (4)
およびtty (4)
デバイスが含まれます。"sftp"を使ったファイル転送をおこなうセッションでは、内蔵の sftp サーバを使うとサポート環境のための設定は必要ありませんが、chroot されたディレクトリ内に、ログ出力のための/dev/logを必要とします (詳しくはsftp-server (8)
を参照してください)。
デフォルトでは、chroot (2) をおこなわない設定になっています。
Ciphers (SSH2の暗号方式)です。aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour
ClientAliveCountMax (クライアントの生存チェック最大カウント数)TCPKeepAlive(下記) とはまったく違うことに注意してください。client alive message は暗号化された経路を介して送られるので、偽造されることはありません。TCPKeepAliveによって設定される TCP の keepalive オプションは偽造される可能性があります。client alive のメカニズムはクライアントあるいはサーバが、いつ接続が切れたのかを知りたいときに役立ちます。
デフォルトの値は 3 です。もしClientAliveInterval(下記) が 15 に設定され、ClientAliveCountMaxがデフォルトのままである場合、これに反応できない SSH クライアントはおよそ 45 秒後に接続が切られます。この設定項目は プロトコル バージョン 2 でのみサポートされています。
ClientAliveInterval (クライアントの生存チェック間隔)Compression (圧縮)DenyGroups (拒否するグループ)DenyUsers 、AllowUsers 、DenyGroups 、そして最後にAllowGroups 。
パターンに関する詳細はssh_config (5) のパターンの項を参照してください。
DenyUsers (拒否するユーザ)DenyUsers 、AllowUsers 、DenyGroups 、そして最後にAllowGroups 。
パターンに関する詳細はssh_config (5) のパターンの項を参照してください。
ForceCommand (強制コマンド実行)ForceCommandによって指定されたコマンドと、存在する場合は~/.ssh/rcを強制的に実行します。このコマンドはそのユーザのログインシェルの -c オプションを使って実行されます。この項目はシェル、コマンド実行、あるいはサブシステムの実行に適用されます。この設定項目はMatchブロックと組み合わせるともっとも有用です。クライアントが本来指定したコマンドラインはSSH_ORIGINAL_COMMAND 環境変数に格納されます。コマンドとして"internal-sftp"を指定すると、強制的に内蔵の sftp サーバを使います。これはChrootDirectoryが指定されているときに、外部のファイルなしで動作できます。GatewayPorts (ポート中継の許可)GatewayPortsは sshd にリモート転送ポートをループバックインターフェイス以外のアドレスに bind させるときに使います。これによって他のホストが転送されたポートに接続できるようになります。引数の値として、転送されたポートをローカルからのみ利用可能にしたい場合は"no"、いかなるアドレスからも利用可能にしたい場合は"yes"、あるいはクライアント側に bind すべきアドレスを指定させたい場合は"clientspecified"を指定します。デフォルトは"no"になっています。GSSAPIAuthentication (GSSAPI 認証)GSSAPICleanupCredentials (GSSAPI 証明書の消去)HostbasedAuthentication (ホストベースド認証の許可)RhostsRSAAuthentication (RhostsRSA 認証の許可)に似ており、プロトコル バージョン 2 のみに作用します。デフォルトの値は"no"になっています。HostbasedUsesNameFromPacketOnly (ホストベースド認証におけるホスト名の使用方法)HostbasedAuthentication) を行うときに、~/.shosts ,~/.rhosts ,および/etc/hosts.equivファイルにクライアントのホスト名が書かれていた場合、サーバがホスト名の逆引きを行うかどうかを指定します。この項目に"yes"を指定すると、sshd (8)
はその TCP 接続から名前を引くことはせずに、クライアントが提示してきた名前を使用します。デフォルトでは"no"になっています。HostCertificate (ホスト証明書)HostKeyで指定されたホスト秘密鍵と対応するものである必要があります。デフォルトではsshd (8)
は証明書を読み込みません。HostKey (ホスト鍵)/etc/ssh/ssh_host_keyであり、プロトコル バージョン 2 用の鍵が/etc/ssh/ssh_host_rsa_keyおよび/etc/ssh/ssh_host_dsa_keyです。このファイルがグループあるいは他人からアクセス可能になっていると、sshd (8)
はその使用を拒絶するので注意してください。複数のホスト鍵を使うことも可能です。"rsa1"鍵はバージョン 1 に使われ、"dsa"または"rsa"はバージョン 2 の SSH プロトコルに使われます。IgnoreRhosts (rhosts の無視)RhostsRSAAuthenticationまたはHostbasedAuthenticationの各認証で、.rhostsおよび.shostsファイルを使わないようにします。
この状態でも、/etc/hosts.equivおよび/etc/shosts.equivは依然として有効です。デフォルトでは"yes"になっています。
IgnoreUserKnownHosts (ユーザ用 known_hosts の無視)RhostsRSAAuthenticationまたはHostbasedAuthenticationの各認証で、ユーザの~/.ssh/known_hostsファイルを使わないようにします。デフォルトは"no"です。KerberosAuthentication (Kerberos 認証)PasswordAuthenticationで入力したパスワードを Kerberos KDC 経由で批准するかどうか指定します。このオプションを使うためには、サーバに KDC のアイデンティティを批准するための Kerberos servtab が必要です。デフォルトでは"no"になっています。KerberosGetAFSToken (Kerberos AFS トークンを取得する)KerberosOrLocalPasswd (Kerberosあるいはローカルパスワード)/etc/passwdなどの別のローカルな機構によって確認されます。デフォルトは"yes"です。KerberosTicketCleanup (Kerberos チケット自動除去)KeyRegenerationInterval (鍵の再生成間隔)ListenAddress (接続受付アドレス)
ListenAddresshost |IPv4_addr |IPv6_addrListenAddresshost |IPv4_addr :portListenAddress[host |IPv6_addr ] :port
port が指定されていないときはsshd はそのアドレスで、それまでのPort設定項目で指定されたすべてのポートで接続を受けつけます。デフォルトではすべてのローカルアドレスに対して接続を受けつけるようになっています。ListenAddress項目は複数指定してもかまいません。またPort設定項目は、ポートつきでないアドレス指定に対してはこの設定項目よりも前に指定しておく必要があります。
LoginGraceTime (ログイン猶予時間)LogLevel (ログレベル)MACs (メッセージ認証コード)の順になっています。hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
Match (条件分岐)Match行にあるすべての条件が満たされた場合、これ以降の設定項目は次のMatch指令が現れるまでグローバルな設定よりも優先されます。
Match指令の引数は、ひとつ以上の「種類 パターン」の組によって与えられます。使用可能な種類はUser(ユーザ名)、Group(グループ名)、Host(ホスト名) およびAddress(アドレス) です。一致するパターンとしては単一のエントリか、あるいはカンマで区切られた複数のエントリのリストを使うことができ、ssh_config (5)
のPATTERNSセクションで説明されているワイルドカードや否定のための表記が使用できます。
また、Address指定で使うパターンには CIDR 表記 (アドレス/マスク長 の形式) を含めることもできます。"192.0.2.0/24"や"3ffe:ffff::/32"などです。ここで指定するマスク長はアドレスと一致させるようにしてください。アドレスに対して長すぎるマスク長や、適切なビットが 0 になっていないアドレスを指定するとエラーになります。たとえば、"192.0.2.0/33"や"192.0.2.0/8"は間違いです。
すべての設定項目にMatch指令が適用されるわけではありません。使用できる項目は、AllowAgentForwarding ,AllowTcpForwarding ,AuthorizedKeysFile ,AuthorizedPrincipalsFile ,Banner ,ChrootDirectory ,ForceCommand ,GatewayPorts ,GSSAPIAuthentication ,HostbasedAuthentication ,HostbasedUsesNameFromPacketOnly ,KbdInteractiveAuthentication ,KerberosAuthentication ,MaxAuthTries ,MaxSessions ,PasswordAuthentication ,PermitEmptyPasswords ,PermitOpen ,PermitRootLogin ,PermitTunnel ,PubkeyAuthentication ,RhostsRSAAuthentication ,RSAAuthentication ,X11DisplayOffset ,X11ForwardingおよびX11UseLocalHostです。
MaxAuthTries (最大認証試行回数)MaxSessionsMaxStartups (最大起動数)LoginGraceTime(ログイン猶予時間) が切れるまで続きます。デフォルトではこの数は 10 です。
もうひとつの方法は、早いうちからランダムに接続を拒否するよう指定することです。これはこの設定項目にコロンで区切った 3 つの値を与えることによりおこないます。この値は"start:rate:full"(``開始時:確率:最大数'') の形をとります (例: "10:30:60" など)。sshd (8) は認証されていない段階の接続が"start"(この例では 10) 個を超えると、これ以後の接続要求を"rate/100"(この例では 30%) の確率で拒否し始めます。この確率は"full"(この例では 60) 個の接続が来るまで線形に増えつづけ、最大数に達した時点でそれ以降すべての接続を拒否するようになります。
PasswordAuthentication (パスワード認証)PermitEmptyPasswords (空のパスワードを許可)PermitOpen (許可するポート転送)
PermitOpenホスト名 :ポートPermitOpenIPv4アドレス :ポートPermitOpen[ IPv6アドレス]:ポート
複数のポート転送は空白で区切って指定できます。引数として"any"を使うと、一切の制限なくすべてのポート転送要求を許可するようになります。デフォルトでは、すべてのポート転送が許可されています。
PermitRootLogin (root ログイン許可)この設定項目を"forced-commands-only"にすると、root は公開鍵認証を使ってログインできますが、その鍵にcommand が指定されている場合にかぎります(これは通常の root ログインを許可していなくても、リモートバックアップをとりたいときなどに有用です)。root に対してはこれ以外の認証方法はすべて禁止になります。
この設定項目を"no"にすると、root のログインは許可されません。
PermitTunnel (トンネリングを許可する)PermitUserEnvironment (ユーザの環境変数変更を許可する)~/.ssh/environmentファイルおよび~/.ssh/authorized_keysにおけるenvironment=オプションを処理すべきかどうかを指定します。デフォルトでは"no"です。環境変数の変更は、ユーザにLD_PRELOAD などの設定を使ったある種のアクセス制限を回避させてしまう可能性があります。PidFile (pid ファイル)/var/run/sshd.pidになっています。Port (ポート番号)ListenAddressの項も参照してください。PrintLastLog (LastLog の表示)PrintMotd (motd の表示)/etc/motd(今日のお知らせ) ファイルの内容を表示するかどうか指定します。(システムによっては、これはシェルや/etc/profileに相当するものが表示します)。デフォルトは"yes"です。Protocol (プロトコル)PubkeyAuthentication (公開鍵認証)RevokedKeys (廃止された鍵)RhostsRSAAuthentication (rhosts-RSA 認証)RSAAuthentication (RSA 認証)ServerKeyBits (サーバ鍵のビット数)StrictModes (厳格なモード)ChrootDirectoryには適応されません。ChrootDirectory では、所有権とパーミッションはつねにチェックされます。Subsystem (サブシステム)sftp-server (8) はファイル転送サブシステム"sftp"を実装したものです。
この他に、"internal-sftp"という名前を指定することにより、内蔵の"sftp"サーバを使用できます。これはChrootDirectoryを使って、クライアントに対してファイルシステム上のルートディレクトリを変更させる状況での設定を簡単にします。
デフォルトではサブシステムは何も定義されていません。この設定項目はプロトコル バージョン 2 にのみ適用されることに注意してください。
SyslogFacility (syslog 分類コード)TCPKeepAlive (TCP接続を生かしておく)デフォルトは"yes"(TCP keepalive メッセージを送る) です。そのためクライアントはネットワークがダウンするか、リモートホストがクラッシュすると通知してきます。これは永久に残るセッションを防ぎます。
TCP Keepalive を禁止するには、この値を"no"にする必要があります。
TrustedUserCAKeys (信頼されるユーザCAの鍵)TrustedUserCAKeysを使った認証に使うことはできません。証明書に関する詳細は、ssh-keygen (1)
の証明書のセクションをごらんください。UseDNS (リモートホスト名の確認)UseLogin (login の使用)X11Forwarding (X11 転送)は許可されなくなるということに注意してください。なぜなら、login (1)
はxauth (1)
クッキーの扱いを知らないからです。UsePrivilegeSeparationが指定されている場合は、認証のあとで禁止されます。UsePAM (PAM の使用)ChallengeResponseAuthenticationを使用した PAM 認証と、PAM アカウントおよびセッションモジュールの処理が許可されます。
ふつう PAM のチャレンジ・レスポンス認証はパスワード認証と等価な役割を提供しているので、PasswordAuthenticationあるいはChallengeResponseAuthentication.のどちらかを許可する必要があります。
UsePAMを許可した場合、sshd を root 以外の一般ユーザで走らせることはできません。デフォルトは"no"です。
UsePrivilegeSeparation (root権限を分離)X11DisplayOffset (X11 ディスプレイ番号のオフセット値)X11Forwarding (X11 転送)
X11 転送が許可されており、転送されたsshd (8)
のディスプレイが任意のアドレス (下のX11UseLocalhost参照) からの接続を受けつけるように設定されていると、サーバやクライアントのディスプレイは余計な危険にさらされることになります。しかし、デフォルトではそうなっていません。また、認証におけるなりすまし、認証データの確認や差し替えなどがクライアント側で起こります。X11 転送を使うセキュリティ上のリスクは、SSH クライアントが転送を要求したときに、クライアント上の X11 サーバが攻撃にさらされるかもしれないということです (ssh_config (5)
のForwardX11注意書きを参照)。システム管理者はクライアントがうっかり X11 を転送して、余計な危険性を増すことのないように、これをかならず"no"に設定させるような立場をとることもできます。
注意: X11 転送機能を禁止しても、ユーザが X11 の通信を転送できなくなるというわけではありません。なぜならユーザはいつでも自前の転送プログラムをインストールして使うことができるからです。UseLoginが許可されていると、X11 転送は自動的に禁止されます。
X11UseLocalhost (X11 で localhost のみを許可)X11UseLocalhostを"no"に設定して、転送された X サーバがワイルドカードアドレスにbind されるようにできます。この設定項目の引数は"yes"あるいは"no"です。デフォルトでは、これは"yes (localhost にしか bind しない)"になっています。XAuthLocation (xauth の位置)/usr/X11R6/bin/xauthになっています。ここでtime は正の整数であり、qualifier は次のうちのどれかです:
<Cm なし> seconds (秒) s | Cm Sseconds (秒) m | Cm Mminutes (分) h | Cm Hhours (時間) d | Cm Ddays (日) w | Cm Wweeks (週)
これらの形式を組み合わせることもでき、その場合は各形式の時間が合計されます。
時間表現の例:
600 600 秒 (10 分) 10m 10 分 1h30m 1 時間 30 分 (90 分)
/etc/ssh/sshd_config