OpenSSH-5.1p1 日本語マニュアルページ (2008/10/03)
OpenSSH SSH デーモン 設定ファイル
/etc/ssh/sshd_config
/etc/ssh/sshd_config
(あるいはコマンドラインから-f
オプションで指定したファイル) から設定を読み込みます。このファイルの各行は"キーワード 引数"の形式になっており、空行あるいは # で始まる行はコメントとみなされます。空白を含む引数はダブルクォート使用できるキーワードとその説明は以下の通りです(キーワードでは大文字小文字は区別されませんが、引数では区別されることに注意してください):
AcceptEnv (受け付ける環境変数)
SendEnv
項目を参照してください。環境変数の受け渡しはプロトコル バージョン 2 でのみサポートされています。環境変数は名前で指定します。名前にはワイルドカード文字 * または ? を含むことができます。複数の環境変数を指定する場合は空白文字で区切るか、あるいは複数のAcceptEnv
項目を指定します。警告: いくつかの環境変数は、制限つきの環境 (restricted environment) を迂回するのに使われることがあります。このため、この設定項目を利用する場合は細心の注意を払ってください。デフォルトでは、いかなる環境変数も受け渡しできないようになっています。AddressFamily (アドレスファミリ)
AllowAgentForwarding
AllowGroups (許可するグループ)
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"となっています。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 サーバを使うとサポート環境のための設定は必要ありません (詳しくはSubsystem
を参照してください)。
デフォルトでは、chroot (2) をおこなわない設定になっています。
Ciphers (SSH2の暗号方式)
です。aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr
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"になっています。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 (接続受付アドレス)
ListenAddress
host |IPv4_addr |IPv6_addrListenAddress
host |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
指令が適用されるわけではありません。使用できる項目は、AllowTcpForwarding ,
Banner ,
ChrootDirectory ,
ForceCommand ,
GatewayPorts ,
GSSAPIAuthentication ,
HostbasedAuthentication ,
KbdInteractiveAuthentication ,
KerberosAuthentication ,
MaxAuthTries ,
MaxSessions ,
PasswordAuthentication ,
PermitOpen ,
PermitRootLogin ,
RhostsRSAAuthentication ,
RSAAuthentication ,
X11DisplayOffset ,
X11Forwarding
およびX11UseLocalHost
です。
MaxAuthTries (最大認証試行回数)
MaxSessions
MaxStartups (最大起動数)
LoginGraceTime
(ログイン猶予時間) が切れるまで続きます。デフォルトではこの数は 10 です。
もうひとつの方法は、早いうちからランダムに接続を拒否するよう指定することです。これはこの設定項目にコロンで区切った 3 つの値を与えることによりおこないます。この値は"start:rate:full"(``開始時:確率:最大数'') の形をとります (例: "10:30:60" など)。sshd (8) は認証されていない段階の接続が"start"(この例では 10) 個を超えると、これ以後の接続要求を"rate/100"(この例では 30%) の確率で拒否し始めます。この確率は"full"(この例では 60) 個の接続が来るまで線形に増えつづけ、最大数に達した時点でそれ以降すべての接続を拒否するようになります。
PasswordAuthentication (パスワード認証)
PermitEmptyPasswords (空のパスワードを許可)
PermitOpen (許可するポート転送)
PermitOpen
ホスト名 :ポートPermitOpen
IPv4アドレス :ポート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 (公開鍵認証)
RhostsRSAAuthentication (rhosts-RSA 認証)
RSAAuthentication (RSA 認証)
ServerKeyBits (サーバ鍵のビット数)
StrictModes (厳格なモード)
Subsystem (サブシステム)
sftp-server (8) はファイル転送サブシステム"sftp"を実装したものです。
この他に、"internal-sftp"という名前を指定することにより、内蔵の"sftp"サーバを使用できます。これはChrootDirectory
を使って、クライアントに対してファイルシステム上のルートディレクトリを変更させる状況での設定を簡単にします。
デフォルトではサブシステムは何も定義されていません。この設定項目はプロトコル バージョン 2 にのみ適用されることに注意してください。
SyslogFacility (syslog 分類コード)
TCPKeepAlive (TCP接続を生かしておく)
デフォルトは"yes"(TCP keepalive メッセージを送る) です。そのためクライアントはネットワークがダウンするか、リモートホストがクラッシュすると通知してきます。これは永久に残るセッションを防ぎます。
TCP Keepalive を禁止するには、この値を"no"にする必要があります。
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 S
seconds (秒) m | Cm M
minutes (分) h | Cm H
hours (時間) d | Cm D
days (日) w | Cm W
weeks (週)
これらの形式を組み合わせることもでき、その場合は各形式の時間が合計されます。
時間表現の例:
600 600 秒 (10 分) 10m 10 分 1h30m 1 時間 30 分 (90 分)
/etc/ssh/sshd_config