OpenSSH資料一覧

sshd_configの設定項目

2008/7/27更新

対応バージョン: 5.1p1

sshd_configには様々な設定項目があるが、ここでは主な項目について説明する。

尚、OpenSSHのバージョンによって設定項目の種類やデフォルト値が異なる場合があるので注意すること。

全般設定

Port

sshdが動作するポート番号。

デフォルトは22。

AddressFamily

sshdが動作するアドレスファミリを指定する。

取りうる値は以下のとおり。

any

すべて

inet

IPv4のみ

inet6

IPv6のみ

デフォルトはany。

ListenAddress

sshdが接続を受けつけるローカルアドレスを指定する。

複数指定したい場合は1行1設定にて複数行記述する。

デフォルトではすべてのローカルアドレスに対して接続を受けつけるようになっている。

尚、Portオプションはこのオプションよりも前に指定しておく必要がある。

Protocol <2|1>

sshdで使用するSSHプロトコルのバージョンを指定する。

両方のプロトコルを使用する場合は2,1のようにカンマで区切って記述する。

デフォルトは2,1。

HostKey

秘密鍵を格納しているファイルを指定する。

デフォルトは上記Protocolオプションで指定しているプロトコルによって異なる。

2

/usr/local/etc/ssh_host_dsa_key 及び

/usr/local/etc/ssh_host_rsa_key

DSA/RSA両方の鍵ファイルを必要とするが、どちらか片方でもsshdは動作する。

1

/usr/local/etc/ssh_host_key

KeyRegenerationInterval

鍵の再生成間隔。

サーバ鍵は(一度でも使われると)ここで指定された秒数ごとに自動的に再生成される。

このように鍵を再生成する目的は、後でそのマシンに侵入して盗聴したセッションを解読されたり鍵を盗まれたりするのを防ぐためである。

この鍵はどこにも格納されない。

0を指定すると鍵はまったく再生成されなくなる。

デフォルトは3600(秒)。

mやhを付けて分/時間の指定も可能。以降、時間に関するオプションは全て同様。

ServerKeyBits

サーバ鍵のビット数を指定する。

デフォルトは1024で、最小は512、最大は32768である。

SyslogFacility

LogLevel

syslogのファシリティ/レベルを指定する。

デフォルトはそれぞれAUTH、INFO。

LoginGraceTime

ユーザがこの時間内でログインに成功できないとサーバは接続を切る。

この値を0にすると時間に制限はなくなる。

デフォルトは2m(120秒)。

PermitRootLogin

rootがSSHを使ってログインできるかどうかを指定する。

デフォルトはyes。

StrictModes

各ユーザのSSH関連の指定ファイルのモードや所有者をチェックするかどうかを指定する。

yesにしておくと各ユーザの$HOME/.ssh/のパーミッションが甘く(例えばワールドに書込権があるように)設定された場合に、他人がここに関連ファイルを置いてSSH経由でアクセスするのを防ぐことができる。

デフォルトはyes。

ForceCommand

クライアントが指定したコマンドを無視し、ここで指定されたコマンド、及び~/.ssh/rc(存在すれば)を強制的に実行する。

このコマンドはそのユーザのログインシェルの-cオプションを使って実行される。

この設定項目は通常Match(後述)と組み合わせて使用する。

セキュリティ

AllowUsers

接続対象のローカルユーザを絞る場合に使用する。スペースで区切って複数指定可能。

userのみ指定すれば任意のホストからuserで指定したユーザにのみ接続を許可する。

user@hostという形式にすれば指定したホストからのみuserで指定したユーザに接続を許可する。

デフォルトは全てのホストからローカルの全ユーザに対して接続を許可。

例) 任意のホストからfooユーザにのみ接続を許可

AllowUsers foo

例) 上記に加え、192.168.0.1からbarユーザに対して接続を許可

AllowUsers foo bar@192.168.0.1

AllowGroups

接続対象のローカルグループを絞る場合に使用する。スペースで区切って複数指定可能。

AllowUsersと異なりホストを指定することはできない。

デフォルトはローカルの全グループに対して接続を許可。

認証

MaxAuthTries

1接続あたりの最大認証回数を使用する。

デフォルトは6。

RSAAuthentication

RSA認証を許可するかどうかを指定する。

デフォルトはyes。

(*) SSHプロトコルのバージョン1を使用している場合にのみ有効。

PubkeyAuthentication

公開鍵認証を許可するかどうかを指定する。

デフォルトはyes。

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

AuthorizedKeysFile

認証の際に使用される公開鍵を格納しているファイルを指定する。

デフォルトは.ssh/authorized_keys。

RhostsRSAAuthentication

RSA認証が成功している時.rhostsや/etc/hosts.equivを使用した認証を行ってよいかを指定する。

デフォルトはno。

(*) SSHプロトコルのバージョン1を使用している場合にのみ有効。

HostbasedAuthentication

公開鍵認証が成功している時.rhostsや/etc/hosts.equivを使用した認証を行ってよいかを指定する。

デフォルトはno。

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

IgnoreUserKnownHosts

RhostsRSAAuthentication、あるいはHostbasedAuthenticationの各認証においてユーザの~/.ssh/known_hostsのファイルに記載されたホスト公開鍵を使用しないかを指定する。

yesなら使用しない、noなら使用する。

デフォルトはno。

IgnoreRhosts

RhostsRSAAuthentication、あるいはHostbasedAuthenticationの各認証において.rhosts及び.shostsによる認証機能を無効にするかどうかを指定する。

yesなら無効にする、noなら有効にする。

デフォルトはyes。

yesの状態でも/etc/hosts.equiv及び/etc/shosts.equivは有効である。

PasswordAuthentication

UNIXのパスワード認証を行うかどうかを指定する。

デフォルトはyes。

公開鍵認証だけを行いたい場合はこの値をnoにする。

PermitEmptyPasswords

空のパスワードを許可するかどうかを指定する。

デフォルトはno。

ChallengeResponseAuthentication

チャレンジレスポンス認証を許可するかどうかを指定する。

デフォルトはyes。

KerberosAuthentication

Kerberos認証を許可するかどうかを指定する。

この認証はKerberosチケットを使うという形で行われる。

あるいはPasswordAuthenticationがyesならユーザのパスワードはKerberos KDC(Key Disstribution Center)を経由して確認される。

このオプションを使うためにはサーバはKDCのidentityを検査するKerberos servtabを必要とする。

デフォルトはno。

KerberosOrLocalPasswd

これが指定されているとKerberos経由のパスワード認証が失敗した時そのパスワードが/etc/passwdなどの別のローカルな機構によって確認される。

デフォルトはyes。

KerberosTicketCleanup

ユーザのチケット用キャッシュをログアウト時に自動的に消去するかどうかを指定する。

デフォルトはyes。

KerberosGetAFSToken

AFSが有効でユーザがKerberos 5 TGT(Ticket-granting Ticket)を持っている場合、そのユーザのホームディレクトリにアクセスする前にAFSトークンを取得しようと試みる。

デフォルトはno。

GSSAPIAuthentication

GSSAPI(Generic Security Service API)ベースのユーザ認証を使用するかどうかを指定する。

デフォルトはno。

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

GSSAPICleanupCredentials

ユーザがログアウトする時にその証明書キャッシュを自動的に消去するかどうかを指定する。

デフォルトはyes。

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

UsePAM

PAM(Pluggable Authentication Module)インタフェースによる認証を許可するかどうかを指定する。

デフォルトはno。

yesに設定した場合、全ての認証形式に対してChallengeResponseAuthenticationを使用したPAM認証と、PAMアカウント及びセッションモジュールの処理が許可される。

このためにPasswordAuthentication、あるいはChallengeResponseAuthenticationのいずれかを許可する必要がある。

パケット転送

AllowTcpForwarding

TCP転送を許可するかどうかを指定する。

デフォルトはyes。

GatewayPorts

リモートホストがクライアント側に転送されたポートに接続することを許可するかどうかを指定する。

デフォルトはno。つまりsshdはリモート転送ポートをループバックアドレスにバインドする。

転送されたポートをローカルからのみ利用可能にしたい場合はnoを、任意のアドレスからも利用可能にしたい場合はyesを、あるいはクライアント側にバインドすべきアドレスを指定させたい場合はclientspecifiedをそれぞれ指定する。

X11Forwarding

X11転送を許可するかどうかを指定する。

デフォルトはno。

X11DisplayOffset

sshdがX11転送をするときに最初に使われるディスプレイ番号を指定する。

これはsshdが本物のXサーバと衝突してしまうのを防ぐ。

デフォルトは10。

X11UseLocalhost

転送されたXサーバをsshdがループバックアドレスにバインドするかどうかを指定する。

デフォルトはyes。つまりsshdは転送されたXサーバをループバックアドレスにバインドし、DISPLAY環境変数のホスト名の部分をlocalhostに設定する。

これによりリモートホストから転送されたXサーバに接続することはできなくなる。

しかし古いXクライアントの場合この設定では動作しないことがある。そのような場合は設定をnoにして転送されたXサーバがワイルドカードアドレスにバインドされるようにできる。

その他

PrintMotd

ログイン時に/etc/motdを表示するかどうかを指定する。

デフォルトはyes。

PrintLastLog

ユーザが対話的にログインしたとき、そのユーザが前回ログインした日付と時刻を表示するかどうかを指定する。

デフォルトはyes。

TCPKeepAlive

ネットワークがダウンしたりクライアントホストがリブートした際にサーバが通知するかどうかを指定する。

デフォルトはyes。

この指定をyesに設定しておくと何らかの原因でSSHセッションが切れた場合にそのセッションが永久にハングしつづけることを回避する。

尚、TCPKeepAliveを禁止するにはサーバとクライアント双方でこの設定をnoに指定する必要がある。

UseLogin

ログインセッションでloginを使用するかどうかを指定する。

デフォルトはno。

UsePrivilegeSeparation

受けつけるネットワークトラフィックを処理するためにsshdがroot権限を分離するかどうかを指定する。

デフォルトはyes。

yesに設定すると認証が成功した際にそのユーザの権限をもつ子プロセスが新たに作られる。

PermitUserEnvironment

sshdが~/.ssh/environment及び~/.ssh/authorized_keysにおけるenvironment=オプションを処理すべきかどうかを指定する。

デフォルトはno。

環境変数の変更はユーザにLD_PRELOADなどを使ってアクセス制限を回避させてしまう恐れもあるので注意して設定する必要がある。

Compression

圧縮、あるいは遅延圧縮(*)を許可するかどうかを指定する。

デフォルトはdelayed。

(*) 遅延圧縮とは、そのユーザが認証されてから初めて圧縮を許可すること。

ClientAliveInterval

sshdは暗号化された経路を介して一定時間ごとにクライアントに応答を要求するメッセージ(client alive message)を送るが、その際何もデータが送られてこなかった場合にタイムアウトする時間を秒数で指定する。

デフォルトは0(メッセージを送らない)

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

ClientAliveCountMax

無反応のクライアントに対してsshdがclient alive messageを送ってみる最大回数を指定する。

client alive messageに対する応答が連続してこの回数分なかった場合、sshdは接続を切ってセッションを終了する。

デフォルトは3。

例えば前述のClientAliveIntervalが10(秒)に設定されClientAliveCountMaxが5の設定の場合、反応しないSSHクライアントはおよそ10(秒) x 5(回) = 50秒後に接続が切られる。

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

UseDNS

リモートホスト名の検証にDNSを使用するかどうかを指定する。

デフォルトはyes。

yesの場合、sshdはIPアドレスからリモートホスト名を逆引き検索して得た名前を正引きして同じIPアドレスになるかどうか確認する。

PidFile

sshdのPIDファイル。

デフォルトは/var/run/sshd.pid

MaxStartups

まだ認証されていない段階の接続を最大で同時にどれくらい受け付けるかを指定する。

これを超える接続は認証が成功するかあるいは接続のLoginGraceTime(ログイン猶予時間)が切れるまで受け付けられず捨てられる。

デフォルトは10。

もうひとつの方法はコロンで区切った3つの値を与えることにより早期のランダムな接続拒否を許可することである。

この値は「start:rate:full」(開始時:確率:最大数)のような形をとる(例:"10:30:60")。

sshdは認証以前の接続がstart(この例では10)個を超えるとこれ以後の接続要求をrate/100(この例では30%)の確率で拒否しはじめる。

この確率はfull(この例では60)個の接続が来るまで線形に増えつづけ、最大数に達した時点でそれ以降すべての接続を拒否するようになる。

PermitTunnel

tunデバイスの転送を許可するかどうかを指定する。

デフォルトはno。

yes/noの他に以下の設定も指定可能。

point-to-point

layer 3

ethernet

layer 2

yesを指定すると上記2設定の両方を許可したことになる。

ChrootDirectory

認証の後にchrootをおこなうパス名を指定する。

このパスを含めてそこに到達するすべてのディレクトリはrootの所有でなければならず、、また他のいかなるユーザやグループも書き込めないようになっていなければならない。

chroot後は接続ユーザにとってそこが/(ルート)になるので例えばshをはじめとしてstdinや/devノードなどセッションに必要なプログラムやファイルが用意されている必要がある。

デフォルトはnone(chrootしない)。

Banner

認証が許可される前にリモートユーザに提示されるファイルを指定する。

noneを指定した場合、バナーは表示されない。

デフォルトはnone。

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

Subsystem

外部サブシステム(ファイル転送デーモンなど)を設定する。

このオプションへの引数はサブシステム名とそのサブシステムに要求があったとき実行されるコマンドを与える。

例えばsftp-server(8)はファイル転送サブシステムsftpを実装したものである。

(*) SSHプロトコルのバージョン2を使用している場合にのみ有効。

Match <条件>

特定の条件に対する限定的な設定を指定できる。

例えばあるユーザの接続に対してのみsshdの挙動を変えたいような場合などに使用する。

Match行にある全ての条件が満たされた場合、これ以降の設定項目は次のMatch指令が現れるまでグローバルな設定よりも優先される。

Matchオプションの引数はひとつ以上の「種類 パターン」の組み合わせによって指定される。

使用可能な種類は以下の4種類である。

User (ユーザ名)
Group (グループ名)
Host (ホスト名)
Address (アドレス)

また、Matchオプションが使用できる設定は以下のいずれかに限られている。

AllowTcpForwarding
Banner
ForceCommand
GatewayPorts
GSSApiAuthentication
KbdInteractiveAuthentication
KerberosAuthentication
PasswordAuthentication
PermitOpen
PermitRootLogin
RhostsRSAAuthentication
RSAAuthentication
X11DisplayOffset
X11Forwarding
X11UseLocalHost

例)

Match User foo
  X11Forwarding no
  AllowTcpForwarding no
  ForceCommand cvs server

関連資料・記事