OpenSSH-5.1p1 日本語マニュアルページ (2008/10/03)
OpenSSH SSH クライアント 設定ファイル
~/.ssh/config
/etc/ssh/ssh_config
コマンドラインオプション ユーザごとの設定ファイル ~/.ssh/config
システム全体にわたる (system-wide) 設定ファイル /etc/ssh/ssh_config
各設定項目にはそれぞれ最初に見つかったものが使われます。設定ファイルはいくつかのセクションに分かれており、これらは"Host"キーワードにより区切られています。あるセクションの設定が適用されるのは、コマンドラインから与えられたホスト名が、このキーワードで指定されているパターンのどれかにマッチするときだけです。
各設定項目で最初に見つかった値が使われるので、ホストに特化した宣言をファイルの先頭近くに置くようにし、一般的なものを後に置くのがよいでしょう。
設定ファイルは以下のような形式になっています:
空行、および # で始まる行は、コメントとみなされます。それ以外の場合、この行は"キーワード 引数"という形式になっています。キーワードと引数は、空白またはひとつの = (間に空白を含んでいてもよい) によって区切られます。後者の形式は、ssh
,scp
およびsftp
などで-o
オプションを使って設定項目を指定するときに、空白をクォートする必要がないようにするためです。空白を含む引数は、ダブルクォート
とりうるキーワードとその意味は以下のとおりです(キーワードは大文字小文字どちらでもかまいませんが、その引数は大文字小文字が区別されることに注意してください) :
Host (ホスト)
Host
キーワードが現れるまでの) 設定項目を、ここで指定されたパターンのどれかにマッチするホストだけに制限します。複数のパターンを与える場合は、それらを空白で区切ってください。 * は、すべてのホストに対するデフォルトとして使えます。ここでいうホストとは、コマンドライン引数で与えられたホスト名 そのもののことです(つまり、ホスト名はマッチングの前に正規化されたりしません)。
パターン (ワイルドカード文字) についての詳細はパターンの項を参照してください。
AddressFamily (アドレスファミリ)
BatchMode (バッチ処理モード)
BindAddress (bind するアドレス)
UsePrivilegedPort
項目が"yes"になってるときは機能しないので注意してください。ChallengeResponseAuthentication (チャレンジ・レスポンス認証)
CheckHostIP (ホスト IP の検査)
known_hosts
に書かれている同一ホスト名 IP アドレスと同じかどうか検査するようになります。これによって、DNS 詐称によりホスト鍵が変えられたことを検出できます。この項目が"no"に設定されている場合は、この検査はおこなわれません。デフォルトでは、これは"yes (ホスト IP アドレスの検査をおこなう)"になっています。Cipher (暗号方式)
Ciphers (複数の暗号方式)
の順になっています。aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr
ClearAllForwardings (すべてのポート転送をキャンセル)
Compression (圧縮)
CompressionLevel (圧縮レベル)
ConnectionAttempts (接続試行回数)
ConnectTimeout (接続タイムアウト)
ControlMaster
ControlPath
の引数で指定された制御用のソケットを listen します。追加のセッションを開くには、同じソケットをControlPath
に指定し、ControlMaster
には"no"を指定します (これがデフォルト)。こうすると、そのセッションは新たにネットワーク接続するのではなく、すでにある Master インターフェイスのネットワーク接続の再利用を試みるようになります。ただし制御用ソケットが存在しないか、listen されていない場合は通常の接続になります。
この値を"ask"に指定すると、ssh は制御用のソケットを listen しますが、これを受けつける際にSSH_ASKPASS プログラムによる確認を要求します(詳細はssh-add (1)
を参照してください)。もしControlPath
がオープンできない場合、ssh は Master への接続なしに処理を継続します。
X11 およびssh-agent (1) 中継は共有した接続の中でも有効ですが、中継する X11 ディスプレイおよびエージェントは Master の接続に所属しているものになります。つまり、複数のディスプレイやエージェントを転送することはできません。
このほかに、オプションとしてさらに 2 種類の方式が指定できます。"auto"または"autoask"を使うと、これらは Master 接続が利用できないときに、自動的に新しい接続を作ります (opportunistic multiplexing)。この場合、後者は"ask"オプションのように、ユーザに確認を求めます。
ControlPath (制御用パス名)
ControlMaster
項目で説明されている、ネットワーク接続を共有する際の制御用ソケットのパス名を指定します。接続の共有を禁止する場合は"none"を指定してください。このパス名の中ではエスケープシーケンスが利用でき、その場合 %l はローカルのホスト名に、 %h は対象のリモートホスト名に、 %p はポートに、そして %r はリモート側のログイン名に変換されます。Master 接続が利用できないときに自動的に新しい接続を作るよう指定した場合 (opportunistic multiplexing)、ControlPath
の値には少なくとも %h, %p および %r のエスケープシーケンスをすべて含めるようにすることが推奨されます。こうすることで、共有する接続を一意に定めることができるからです。DynamicForward (動的なポート転送)
引数の値は [bindするアドレス :] ポート の形式です。IPv6 アドレスは角カッコで囲むか、これとは別の形式で指定します: [bindするアドレス /] ポート デフォルトでは、ローカルのポートはGatewayPorts
の設定にしたがって bind されますが、bindするアドレス を明示的に書いておくことにより、特定のアドレスに bind させることもできます。bindするアドレス を"localhost"にすると、listen するポートはローカル専用になり、アドレスを指定しないか `*' にすると、ポートはすべてのネットワークインターフェイスで使用可能になります。
今のところ SOCKS4 および SOCKS5 プロトコルが使われており、ssh (1) は SOCKS サーバのようにふるまいます。複数のポート転送も指定でき、コマンドラインからこれを追加することもできます。特権ポートを転送できるのは root だけです。
EnableSSHKeysign (ssh-keysign を使用する)
/etc/ssh/ssh_config
でこの項目を"yes"に設定すると、HostbasedAuthentication
の際にssh-keysign (8)
の使用が許可されます。引数の値は"yes"あるいは"no"です。デフォルトは"no"になっています。この項目はホストに依存しない部分に記述すべきです。詳しくはssh-keysign (8)
を参照してください。EscapeChar (エスケープ文字)
ExitOnForwardFailure (転送できない場合に終了)
ForwardAgent (エージェント転送)
認証エージェントの転送には注意が必要です。リモートホスト上で (エージェントの UNIX ドメインソケットに対する)ファイルアクセス権限を無視できてしまうユーザがいる場合は、転送された接続を介してローカル側の認証エージェントにアクセスできてしまうことになります。攻撃側は認証エージェントから鍵そのものを盗むことはできませんが、認証エージェントがもっている鍵に認証をおこなわせることはできます。
ForwardX11 (X11 転送)
X11 の転送には注意が必要です。リモートホスト上で (そのユーザの X11 認証のための) ファイルアクセス権限を無視できてしまうユーザがいる場合は、転送された接続を介してローカル側のX11 ディスプレイにアクセスできてしまうことになります。もし、ForwardX11Trusted
項目も許可されていたとすると、攻撃側はキーストロークを盗み見るなどの行為が可能になってしまうかもしれません。
ForwardX11Trusted (信頼された X11 転送)
この項目が"no"に設定されている場合、リモートの X11 クライアントは信頼できないとみなされ、信頼された X11 クライアントに属するデータを盗み見たり改竄したりすることはできません。さらに、このセッションで使われるxauth (1) トークンは 20 分後に期限が切れるよう設定されており、リモート側のクライアントは、この時間を過ぎるとアクセスを拒否されるようになります。
デフォルトでは"no"になっています。
信頼できないクライアントに課される制限についての完全な情報は、X11 SECURITY 拡張機能の仕様書を参照してください。
GatewayPorts (ポート転送の中継)
GatewayPorts
を使うと、ssh は転送されたローカルポートをワイルドカードアドレス (0.0.0.0) にbind するようになります。これは他のホストもその転送されたポートに接続できるということです。この引数の値は"yes"または"no"で、デフォルトは"no (転送されているポートに他ホストからの接続を許可しない)"に設定されています。GlobalKnownHostsFile (大域的 known_host ファイル)
/etc/ssh/ssh_known_hosts
のかわりに使用するホスト鍵データベースファイルを指定します。GSSAPIAuthentication (GSSAPI 認証)
GSSAPIDelegateCredentials (証明書の転送)
HashKnownHosts (known_hostsをハッシュする)
~/.ssh/known_hosts
に追加するとき、そのホスト名および IP アドレスをハッシュするよう指定します。これらのハッシュされた名前はssh (1)
およびsshd (8)
によって使われますが、たとえこれらの情報が見られても識別可能な情報が明らかになることはありません。この値は、デフォルトでは"no"になっています。すでに known_hosts 中にある名前に対して、あとからハッシュ化が適用されることはありませんが、ssh-keygen (1)
を使えばこれらも手動でハッシュすることができます。HostbasedAuthentication (ホストベースド認証)
RhostsRSAAuthentication
と似ています。HostKeyAlgorithms (ホスト間認証の方式)
HostKeyAlias (ホスト鍵のエイリアス)
HostName (実際のホスト名)
ssh_config
はコマンドラインで与えられたホスト名に接続しますが、これを使うと、ホストのニックネームや省略形を使用することができます。数字の IP アドレスでもかまいません(コマンドライン、HostName
キーワードの両方とも)。IdentitiesOnly (ファイルに格納された秘密鍵のみを使用)
ssh_config
ファイルで指定された秘密鍵のみを使用するよう指定します。この引数のとりうるキーワードは"yes"または"no"です。この項目を使うのは、ssh-agent が多くの異なる秘密鍵を返すような状況でしょう。デフォルトでは"no"になっています。IdentityFile (identity ファイル)
~/.ssh/identity
ファイルが、プロトコル バージョン 2 の場合は~/.ssh/id_rsa
および~/.ssh/id_dsa
が使われます。これに加えて、認証エージェントによって現れる identity も使われます。
ユーザのホームディレクトリを表すのにチルダ表記や、以下のエスケープ文字を使うこともできます: %d (ローカルユーザのホームディレクトリ)、 %d (ローカルのユーザ名)、 %l (ローカルホスト名)、 %h (リモートホスト名)、あるいは %r (リモートのユーザ名)。
設定ファイルでは複数の identity を指定することもでき、この場合すべての identity が順に試されます。
KbdInteractiveAuthentication (キーボード対話的認証)
KbdInteractiveDevices (キーボード対話デバイス)
LocalCommand (ローカルで実行するコマンド)
PermitLocalCommand
が許可されていない場合、この項目は無視されます。LocalForward (ローカル→リモート転送)
GatewayPorts
の設定に従って bind されますが、bindするアドレス を明示的に指定することで、特定のアドレスに接続をふり向けることができます。bindするアドレス として"localhost"を指定すると、ポートを listen するのはローカルな使用のみに限ることになります。いっぽう、空のアドレスまたは `*' を指定すると、そのポートはすべてのインターフェイスに対して使用可能になります。LogLevel (ログレベル)
MACs (メッセージ認証コード)
の順になっています。hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
NoHostAuthenticationForLocalhost (localhostでのホスト認証を抑制)
NumberOfPasswordPrompts (パスワード試行回数)
PasswordAuthentication (パスワード認証)
PermitLocalCommand (ローカルなコマンド実行許可)
Port (ポート番号)
PreferredAuthentications (認証の優先順位)
keyboard-interactive
など) をそれ以外の認証 (password
など) よりも優先して選ぶことができます。この設定項目のデフォルトはgssapi-with-mic,hostbased,publickey,keyboard-interactive,passwordになっています。
Protocol (プロトコル)
ProxyCommand (プロキシ コマンド)
CheckHostIP (ホスト IP アドレスの検査)
は使用できませんので注意してください。
この設定項目は、nc (1) のプロキシ・サポートと組み合わせて使うのに有用です。たとえば、以下の設定では 192.0.2.0 の HTTP プロキシ経由で接続します:
ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
PubkeyAuthentication (公開鍵認証)
RekeyLimit (rekey の制限)
RemoteForward (リモート→ローカル転送)
デフォルトでは、サーバ側で listen するソケットはループバックインターフェイスにのみ bind されます。これはbindするアドレス を指定することによって上書きすることができます。空のbindするアドレス または * をアドレスとして指定すると、サーバ側のソケットはすべてのインターフェイスに対して listen するようになります。bindするアドレス にループバック以外の値が指定できるのは、GatewayPorts
設定項目が許可されているときのみです (sshd_config (5)
を参照してください)。
RhostsRSAAuthentication (rhosts-RSA 認証)
RSAAuthentication (RSA 認証)
SendEnv (環境変数を送信)
AcceptEnv
を参照してください。変数は名前によって指定されます。この名前にはワイルドカード文字を含むことができます。複数の環境変数を指定する場合は空白によって区切るか、複数のSendEnv
項目を指定することができます。デフォルトでは、どの環境変数も送られないようになっています。
ワイルドカード文字の詳細についてはパターンを参照してください。
ServerAliveCountMax (サーバ生存カウント最大値)
TCPKeepAlive
とはまったく違うということです。サーバ生存確認メッセージは暗号化された通信路を経由して送られるので、偽装可能ではありません。これに対して、TCPKeepAlive
で指定される TCP の keepalive オプションは偽装が可能です。このサーバ生存確認の機構は、クライアントまたはサーバ側が、いつ接続が切れたかを知りたいときに有用です。
このデフォルト値は、 3 です。たとえばもし、ServerAliveInterval
(下記) が 15 に設定されており、ServerAliveCountMax
がデフォルトのままだったとしたら、ssh はサーバが応答しなくなった後およそ 45 秒後に接続を切断します。この設定項目はプロトコル バージョン 2 にのみ適用されます。
ServerAliveInterval (サーバ生存確認の間隔)
SmartcardDevice (スマートカード・デバイス)
StrictHostKeyChecking (厳格なホスト鍵チェック)
~/.ssh/known_hosts
ファイルに自動的にホスト認証鍵を追加しません。鍵が変更されているホストへの接続は拒否されます。これはトロイの木馬攻撃に対する最大の防御となりますが、/etc/ssh/ssh_known_hosts
ファイルをきちんと更新していなかったり、新規のホストに頻繁に接続するような状況だと邪魔になるかもしれません。このオプションを使うとユーザは手で新しいホストの鍵を追加しなければならなくなります。この設定項目が"no"に設定されている場合、ssh は新しいホスト鍵をユーザの known_hosts ファイルに自動的に追加します。この設定項目が"ask"に設定されていると、新しいホスト鍵が追加されるのは、ユーザが本当にそれを望んでいると確認できたときだけになります。ホスト鍵が変更されているホストへの接続は拒否されます。known_hosts ファイルに含まれているホスト鍵はいかなる場合でも自動的に検査されます。この設定項目がとりうる値は"yes"、"no"あるいは"ask"で、デフォルトは"ask"です。TCPKeepAlive (TCP接続を生かしておく)
デフォルトは"yes (TCP keepalive メッセージを送る)"です。そのためクライアントはネットワークがダウンするか、リモートホストが落ちると通知してきます。これはスクリプト中では重要であり、多くのユーザもこれを望んでいます。
TCP Keepalive メッセージを禁止するには、この値を"no"にする必要があります。
Tunnel (トンネリングの指定)
TunnelDevice (トンネリングするデバイス)
この引数はローカルtun [:リモートtun ] の形である必要があります。デバイス名にはインターフェイス番号か、キーワード"any"を指定します。これを指定すると次に使用可能なデバイスが選択されることになります。リモートtun が指定されない場合、これは"any"とみなされます。この設定項目のデフォルト値は"any:any"です。
UsePrivilegedPort (特権ポートを使用する)
RhostsRSAAuthentication
認証が必要な場合は、この設定項目を"yes"にする必要があります。User (ユーザ)
UserKnownHostsFile (個人用 known_hosts ファイル)
~/.ssh/known_hosts
以外のファイルを使うときに指定します。VerifyHostKeyDNS (DNSでホスト鍵を確認する)
StrictHostKeyChecking
設定項目に従って新しいホスト鍵を確認しなければなりません。この設定項目がとりうる値は"yes"、"no"あるいは"ask"です。デフォルトでは"no"になっています。注意: この設定項目はプロトコル バージョン 2 にのみ適用されます。
VisualHostKey
XAuthLocation (xauth の位置)
/usr/X11R6/bin/xauth
です。
以下のパターンはアドレス範囲が 192.168.0.[0-9] にある任意のホストに一致します:
パターン列はカンマ (,) で区切られたパターンの列をさします。パターン列中の各パターンは、先頭に感嘆符
~/.ssh/config
/etc/ssh/ssh_config