SSH_CONFIG(5)

名称
ssh_config - OpenSSH SSH クライアント 設定ファイル

書式
$HOME/.ssh/config
/etc/ssh/ssh_config

解説
ssh は以下のものから (この順序で) 設定情報を取得します:
1.  コマンドラインオプション
2.  ユーザごとの設定ファイル ($HOME/.ssh/config)
3.  システム全体にわたる (system-wide) 設定ファイル (/etc/ssh/ssh_config)

各設定項目にはそれぞれ最初に見つかったものが使われます。 設定ファイルはいくつかのセクションに分かれており、これらは “Host” キーワードにより区切られています。あるセクションの設定が 適用されるのは、コマンドラインから与えられたホスト名が、 このキーワードで指定されているパターンのどれかにマッチするときだけです。

各設定項目で最初に見つかった値が使われるので、ホストに特化した 宣言をファイルの先頭近くに置くようにし、一般的なものを後に置くのが よいでしょう。

設定ファイルは以下のような形式になっています:

空行、および ‘#’ で始まる行は、コメントとみなされます。

それ以外の場合、この行は “キーワード 引数” という形式になっています。 キーワードと引数は、空白またはひとつの ‘=’ (間に空白を含んでいてもよい) によって区切られます。 後者の形式は、 ssh, scp および sftp などで -o オプションを使って設定項目を指定するときに、 空白をクォートする必要がないようにするためです。

とりうるキーワードとその意味は以下のとおりです (キーワードは大文字小文字どちらでもかまいませんが、 その引数は大文字小文字が区別されることに注意してください) :

Host (ホスト)
    これ以後の (次の Host キーワードが現れるまでの) 設定項目を、ここで 指定されたパターンのどれかにマッチするホストだけに 制限します。パターン中では ‘*’ と ‘’? がワイルドカードとして使えます。単独の ‘*’ は、すべてのホストに対するデフォルトとして使えます。 ここでいうホストとは、コマンドライン引数で与えられた ホスト名 そのもののことです (つまり、ホスト名はマッチングの前に正規化されたりしません)。

AFSTokenPassing (AFS トークンパス)
    リモートホストに AFS トークンを渡すかどうかを指定します。 この引数がとりうる値は “yes” あるいは “no” のどちらかになります。 このオプションはプロトコル バージョン 1 でのみ有効です。

BatchMode (バッチ処理モード)
    これが “yes” に設定されていると、パスフレーズおよびパスワードの 入力を求めないようになります。このオプションはスクリプトなどにおける バッチ処理中で、パスワードを打ち込むユーザがいない場合に便利です。 引数の値は “yes” あるいは “no” です。 デフォルトは “no (パスワードあるいはパスフレーズの入力を求める)” です。

BindAddress (bind するアドレス)
    複数のインタフェースあるいはエイリアスされたアドレスを もっているマシンで、通信に使うインタフェースを指定します。 このオプションは UsePrivilegedPort 項目が “yes” になってるときは機能しないので注意してください。

ChallengeResponseAuthentication (チャレンジ・レスポンス認証)
    チャレンジ・レスポンス認証をおこなうかどうかを指定します。 この引数がとりうる値は “yes” あるいは “no” です。デフォルトでは “yes (チャレンジ・レスポンス認証をおこなう)” になっています。

CheckHostIP (ホスト IP の検査)
    このオプションが “yes” に設定されていると、ssh は接続先ホスト名の IP アドレスが known_hosts に書かれている同一ホスト名 IP アドレスと同じかどうか 検査するようになります。 これによって、DNS 詐称によりホスト鍵が変えられたことを 検出できます。このオプションが “no” に設定されている場合は、この検査はおこなわれません。 デフォルトでは、これは “no (ホスト IP アドレスの検査をおこなわない)” になっています。

Cipher (暗号化アルゴリズム)
    プロトコル バージョン 1 のセッションで使う暗号化の アルゴリズムを指定します。現在のところ “blowfish”, “3des” および “des” がサポートされており、デフォルトは “3des” です。 des は、 3des 暗号をサポートしていない、もはや古くなったプロトコル 1 の実装と 相互運用するためにのみサポートされています。 この暗号は弱いため、使用はおすすめしません。

Ciphers (複数の暗号化アルゴリズム)
    プロトコル バージョン 2 で使う暗号化アルゴリズムの 優先順位を指定します。複数の暗号化アルゴリズムを コンマで区切って指定します。 デフォルトは

          ``aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,
            aes192-cbc,aes256-cbc''

    の順になっています。

ClearAllForwardings (すべてのポート転送をキャンセル)
    設定ファイルあるいはコマンドラインで指定された、 ローカル、リモートおよびダイナミックなポート転送をすべて キャンセルします。このオプションは設定ファイルで指定されている ポート転送を ssh のコマンドラインで打ち消すためにあり、 scp(1) や sftp(1) で自動的に使われます。この引数の値は “yes” あるいは “no” です。デフォルトでは “no” になっています。

Compression (圧縮)
    データ圧縮をおこなうかどうかを指定します。 引数の値は “yes” あるいは “no” です。 デフォルトでは “no (圧縮をおこなわない)” になっています。

CompressionLevel (圧縮レベル)
    圧縮をおこなうさいの圧縮レベルを指定します。 この引数がとる値は 整数の 1 (速い) から 9 (遅い、高圧縮率) までです。 デフォルトの値は 6 で、ほとんどのアプリケーションにはこれで充分です。 この値の意味は gzip(1) と同じです。 このオプションはプロトコル バージョン 1 のみに適用されることに 注意してください。

ConnectionAttempts (接続試行回数)
    接続を試みる回数 ( 1 秒に 1 回) を指定します。これを越えると ssh は終了してしまいます。この値は整数で なければなりません。これは、ときどき接続に失敗する環境での スクリプトなどに便利です。 デフォルトは 1 回です。

DynamicForward (動的なポート転送)
    暗号化された通信路を経由して、ローカルホスト側の TCP/IP ポートを 転送するよう指定します。このとき、どのリモートホストから 接続するかを決定するためにアプリケーションレベルのプロトコルが 使われます。このオプションの引数はポート番号である必要があります。 今のところ SOCKS4 プロトコルが使われており、 ssh は SOCKS4 サーバのようにふるまいます。 複数のポート転送も指定でき、コマンドラインからこれを追加することも できます。特権ポートを転送できるのは root だけです。

EscapeChar (エスケープ文字)
    エスケープ文字を設定します (デフォルトは ‘~’ )。エスケープ文字はコマンドラインからも指定できます。 この引数には 1 つの文字か、 ‘^’ に 1 文字を付けたもの、あるいはエスケープ文字の使用をすべて禁止するなら “none” を指定します (これはその接続を、バイナリ データに対して透過にすることになります)。

ForwardAgent (エージェント転送)
    認証エージェントへの接続を、(それが存在する時は) リモートマシン上に 転送するかどうかを指定します。この引数の値は “yes” あるいは “no” でなければならず、デフォルトは “no (エージェント転送をおこなわない)” です。

    認証エージェントの転送には注意が必要です。 リモートホスト上で (エージェントの UNIX ドメインソケットに対する) ファイルアクセス権限を無視できてしまうユーザがいる場合は、 転送された接続を介してローカル側の 認証エージェントにアクセスできてしまうことになります。 攻撃側は認証エージェントから鍵そのものを盗むことはできませんが、 認証エージェントがもっている鍵に認証をおこなわせることはできます。

ForwardX11 (X11 転送)
    X11 接続を自動的に安全な通信路へリダイレクトし、 DISPLAY を設定するかどうかを指定します。この引数の値は “yes” あるいは “no” でなければならず、デフォルトは “no (X11 接続を転送しない)” です。

    X11 の転送には注意が必要です。 リモートホスト上で (そのユーザの X 認証のための) ファイルアクセス権限を 無視できてしまうユーザがいる場合は、転送された接続を介してローカル側の X11 ディスプレイにアクセスできてしまうことになります。 すると攻撃側はキーストロークを盗み見るなどの行為が可能になってしまうかも しれません。

GatewayPorts (ポート転送の中継)
    ローカルからリモートへ転送されている (リモート→ローカルのポート転送) ポートに、他ホストからの接続を許すかどうかを指定します。 デフォルトでは、 ssh は転送されたローカルポートをループバックアドレス (127.0.0.1) に bind します。このため他の (訳注: サーバ以外の) ホストが 転送されたポートに接続することはできません。 GatewayPorts を使うと、 ssh は転送されたローカルポートをワイルドカードアドレス (0.0.0.0) に bind するようになります。これは他のホストもその転送されたポートに 接続できるということです。 この引数の値は “yes” または “no” で、デフォルトは “no (転送されているポートに他ホストからの接続を許可しない)” に設定されています。

GlobalKnownHostsFile (大域的 known_host ファイル)
    そのホスト全体で /etc/ssh/ssh_known_hosts のかわりに使用するホスト鍵データベースファイルを指定します。

HostbasedAuthentication (ホストベース認証)
    ホスト間認証を使った rhosts ベースの認証をおこなうかどうかを指定します。 とりうる引数の値は “yes” または “no” で、デフォルトは “no (ホストベース認証を試みない)” になっています。 このオプションはプロトコル バージョン 2 のみに適用され、 RhostsRSAAuthentication と似ています。

HostKeyAlgorithms (ホスト間認証のアルゴリズム)
    プロトコル バージョン 2 において、ホスト間認証で使われる アルゴリズムを指定します。クライアントはここで指定された 優先順位のアルゴリズムを使って認証を試みます。 このオプションのデフォルトは “ssh-rsa,ssh-dss” です。

HostKeyAlias (ホスト鍵のエイリアス)
    ホスト鍵データベースからホスト鍵を検索するとき、あるいは データベースにホスト鍵を保存するときに、実際のホスト名のかわりに 使われる名前を指定します。 このオプションは ssh 接続をトンネリングしているときや、 単一のホスト上で複数の sshd サーバを動かしているときなどに 便利です。

HostName (実際のホスト名)
    実際にログインするホスト名を指定します。デフォルトでは ssh_config はコマンドラインで与えられたホスト名に接続しますが、 これを使うと、ホストのニックネームや省略形を使用することができます。 数字の IP アドレスでもかまいません (コマンドライン、 HostName キーワードの両方とも)。

IdentityFile (identity ファイル)
    ユーザの RSA または DSA 認証用 identity (秘密鍵) を 読むファイルを指定します (デフォルトは、プロトコル バージョン 1 の場合 ユーザのホームディレクトリにある $HOME/.ssh/identity ファイルが、プロトコル バージョン 2 の場合は $HOME/.ssh/id_rsa および $HOME/.ssh/id_dsa が使われます)。 これに加えて、認証エージェントによって現れる identity も使われます。 ユーザのホームディレクトリを表すのにチルダ表記を使うこともできます。 設定ファイルでは複数の identity を指定することもでき、 この場合すべての identity が順に試されます。

KeepAlive (接続を生かしておく)
    システムが相手のマシンに TCP keepalive メッセージを送るかどうかを 指定します。これが送られると、接続の異常終了や相手マシンの クラッシュが正しく通知されるようになります。 しかしこれを使うと、たとえ経路が一時的にダウンしていても 接続が死んでいるということになってしまい、これが邪魔になる場合もあります。

    デフォルトは “yes (keepalive を送る)” です。そのため クライアントはネットワークがダウンするか、 リモートホストが落ちると通知してきます。 これはスクリプト中では重要であり、多くのユーザもこれを望んでいます。

    Keepalive を禁止するには、この値を “no” にする必要があります。

KerberosAuthentication (Kerberos 認証)
    Kerberos 認証をおこなうかどうか指定します。この引数の値は “yes” あるいは “no” です。

KerberosTgtPassing (Kerberos TGT パス)
    Kerberos TGT がサーバを転送するかどうかを指定します。これは その Kerberos サーバが実際に AFS kaserver であるときのみ 機能します。この引数の値は “yes” あるいは “no” です。

LocalForward (ローカル→リモート転送)
    ローカルマシンの TCP/IP ポートを、安全な通信路を経由して リモートマシン上から与えられた host:port に転送するよう指示します (訳注: -L オプションと同じ)。 最初の引数は転送するローカルホストのポートを、2番目の引数には転送先を host:port の形で指定します。 IPv6 アドレスはこれとは別の host/port という形式で指定します。ポート転送は複数指定することができ、 コマンドラインから追加指定することもできます。 特権ポートを転送できるのはスーパユーザだけです。

LogLevel (ログレベル)
    ssh_config が出力するログの冗長性のレベルを指定します。 とりうる値は次のとおりです: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 および DEBUG3。 デフォルトでは INFO になっています。DEBUG と DEBUG1 は等価です。 DEBUG2, DEBUG3 はそれぞれさらに冗長なログになります。

MACs (メッセージ認証コード)
    使用する MAC (メッセージ認証コード) アルゴリズムの優先順位を指定します。 MAC アルゴリズムはプロトコル バージョン 2 で使われる、 データの改竄を防ぐ機構 (data integrity protection) です。 複数のアルゴリズムをコンマで区切って指定します。 デフォルトは “hmac-md5,hmac-sha1,hmac-ripemd160,hmac-sha1-96,hmac-md5-96” の順になっています。

NoHostAuthenticationForLocalhost (localhostでのホスト認証を抑制)
    このオプションはホームディレクトリがマシン間で共有されているときに 使います。このような状況ではそれぞれ別々のマシンで localhost のさす ホストが異なっているため、ユーザはホスト鍵が変わったという警告を 受けてしまいます (訳注: 別々のホスト鍵をもつマシンで同一の localhost ホスト鍵が共有されているため)。このオプションを使うと、相手が localhost のときにはホスト間認証を抑制することができます。 この引数がとりうる値は “yes” あるいは “no” です。 デフォルトでは、yes (相手が localhost でも鍵をチェックする) になっています。

NumberOfPasswordPrompts (パスワード試行回数)
    パスワードを最高何回まで訊くかを指定します。 この回数を超えると認証は失敗します。 このキーワードには整数を指定する必要があります。 デフォルト値は 3 です。

PasswordAuthentication (パスワード認証)
    パスワード認証をおこなうかどうかを指定します。この引数の値は “yes” または “no” です。デフォルトでは “yes (パスワード認証をおこなう)” になっています。

Port (ポート番号)
    リモートホストに接続するときのポート番号を指定します。 デフォルトは 22 です。

PreferredAuthentications (認証の優先順位)
    プロトコル 2 で試される認証の優先順位を指定します。 これによって、クライアントは特定の認証 ( keyboard-interactive など) をそれ以外の認証 ( password など) よりも優先して選ぶことができます。 このオプションのデフォルトは “hostbased,publickey,keyboard-interactive,password” の順になっています。

Protocol (プロトコル)
    ssh がサポートすべきプロトコルのバージョンの優先順位を指定します。 とりうる値は “1” と “2” です。 複数のバージョンを 指定するときはコンマで区切ってください。 デフォルト値は “2,1” です。これは ssh がまず始めにバージョン 2 がサポートされているかどうかを調べ、 サーバがそれをサポートしていなかった場合に バージョン 1 を使用することを指示しています (訳注: もしサーバ側がバージョン 2 の認証をサポートしていた場合、 バージョン 2 での認証に失敗すると ssh は そこで終了します。バージョン 1 の認証は *おこなわない* ため、 注意してください)。

ProxyCommand (プロキシ コマンド)
    サーバに接続するのに使用するコマンドを指定します。 コマンド文字列はこのキーワード以後、行末まで書くことができます。 コマンド文字列は /bin/sh によって実行されます。 コマンド文字列では、 ‘%h’ は接続するホスト名に置換され、 ‘%p’ はポート番号に置換されます。 コマンドは基本的に何でもよいのですが、標準入力から読み込み、 標準出力に書き込むようなものである必要があります。 これは最終的にサーバマシン上で動いている sshd(8) に接続するか、どこか別の場所で sshd -i を起動させるようにします。 ホスト鍵の管理は接続されているホストの HostName を使っておこなわれます (デフォルトでは、これはユーザが タイプした名前になります)。 このコマンドを “none” に設定すると、このオプションは完全に使用禁止になります。 プロキシコマンドを使うと、 CheckHostIP (ホスト IP アドレスの検査) は使用できませんので注意してください。

PubkeyAuthentication (公開鍵認証)
    公開鍵認証をおこなうかどうかを指定します。 このキーワードの引数は “yes” か “no” のどちらかです。 デフォルトでは “yes (公開鍵認証をおこなう)” になっています。 このオプションはプロトコル バージョン 2 のみに適用されます。

RemoteForward (リモート→ローカル転送)
    リモートマシン上の TCP/IP ポートを、安全な通信路を経由して ローカルマシン上から与えられた host:post に転送するよう指示します (訳注: -R オプションと同じ)。 最初の引数は転送するリモートホストのポートを、 2番目の引数には転送先を host:port の形で指定します。 IPv6 アドレスはこれとは別の host/port という形式で指定します。ポート転送は複数指定することができ、 コマンドラインから追加指定することもできます。 特権ポートを転送できるのはスーパユーザだけです。

RhostsAuthentication (rhosts 認証)
    rhosts ベースの認証をおこなうかどうかを指定します。この宣言は クライアント側にのみ影響し、セキュリティ的にまったくなんの 効果もないことに注意してください。 ほとんどのサーバでは RhostsAuthentication は 安全でないという理由で許可されていません ( RhostsRSAAuthentication を参照のこと)。 この引数の値は “yes” または “no” です。 デフォルトでは “no (rhosts 認証をおこなわない)” になっています。 このオプションはプロトコル バージョン 1 のみに適用され、 この機能を使うためには ssh が setuid root されていて UsePrivilegedPort が “yes” に設定されている必要があります。

RhostsRSAAuthentication (rhosts-RSA 認証)
    RSA ホスト認証を使った rhosts ベースの認証を試みるかどうかを 指定します。 この引数の値は “yes” または “no” です。 デフォルトの値は “no (rhosts-RSA 認証をおこなわない)” です。 このオプションはプロトコル バージョン 1 のみに適用され、 これを使うには ssh を setuid root にしておくことが必要です。

RSAAuthentication (RSA 認証)
    RSA 認証を使うかどうかを指定します。 この引数の値は “yes” または “no” です。RSA 認証は identity ファイルが存在するときか、 認証エージェントが動いているときのみ使用されます。 デフォルトは “yes (RSA 認証をおこなう)” です。 このオプションは プロトコル バージョン 1 にしか適用されないので注意してください。

SmartcardDevice (スマートカード・デバイス)
    使用するスマートカードのデバイスを指定します。 この引数には ssh がスマートカードと通信するときに使うデバイスを指定します。 スマートカードはユーザの RSA 秘密鍵を格納するのに使われます。 デフォルトではデバイスは何も指定されておらず、スマートカードの使用は 有効になっていません。

StrictHostKeyChecking (厳格なホスト鍵チェック)
    このオプションが “yes” に設定されている場合、 ssh は決して $HOME/.ssh/known_hosts ファイルに自動的にホスト認証鍵を追加しません。 鍵が変更されているホストへの接続は拒否されます。 これはトロイの木馬攻撃に対する最大の防御となりますが、 /etc/ssh/ssh_known_hosts ファイルをきちんと更新していなかったり、新規のホストに頻繁に 接続するような状況だと邪魔になるかもしれません。 このオプションを使うとユーザは手で新しいホストの鍵を 追加しなければならなくなります。 このオプションが “no” に設定されている場合、 ssh は新しいホスト鍵をユーザの known_hosts ファイルに 自動的に追加します。 このオプションが “ask” に設定されていると、 新しいホスト鍵が追加されるのは、ユーザが 本当にそれを望んでいると確認できたときだけになります。 ホスト鍵が変更されているホストへの接続は拒否されます。 known_hosts ファイルに含まれているホスト鍵は いかなる場合でも自動的に検査されます。 このオプションがとりうる値は “yes”, “no” あるいは “ask” で、デフォルトは “ask” です。

UsePrivilegedPort (特権ポートを使用する)
    外に向けての接続をおこなうときに、 特権ポートを使用するかどうかを指定します。この引数の値は “yes” または “no” で、デフォルトは “no” になっています。 “yes” に設定した場合、 ssh は setuid root である必要があります。 注意: 旧式の sshd に対して RhostsAuthentication あるいは RhostsRSAAuthentication の認証が必要な場合は、このオプションを “yes” にする必要があります。

User (ユーザ)
    ログインするユーザ名を指定します。これは異なるマシン上で 異なるユーザ名が使われている場合に便利です。 これでコマンドラインからわざわざユーザ名を与えなくてもすみます。

UserKnownHostsFile (個人用 known_hosts ファイル)
    ホスト鍵データベースとして $HOME/.ssh/known_hosts 以外のファイルを使うときに指定します。

VersionAddendum (バージョンに付加するもの)
    OS もしくはサイトに特化した修正を示すために、通常のバージョン文字列に 付け加える文字列を指定します。 デフォルトは “FreeBSD-20030924” です。

XAuthLocation (xauth の位置)
    xauth(1) プログラムのフルパス名を指定します。デフォルトは /usr/X11R6/bin/xauth です。

関連ファイル

$HOME/.ssh/config
    ユーザごとの個人用設定ファイルです。 ファイル形式は上で説明されています。 このファイルは ssh クライアントによって使われます。 このファイルはふつう特に秘密の情報は含んでいませんが、 しかし望ましいパーミッションとしては、そのユーザからは 読み/書き可能で、他人からはアクセス不可能にしておくのがよいでしょう。

/etc/ssh/ssh_config
    システム全体にわたる設定ファイルです。このファイルはユーザの設定 ファイルでは指定されなかった値を提供し、また設定ファイルを 持たないユーザのためのデフォルトにもなります。このファイルは 誰にでも読み込み可能でなければいけません。

作者
OpenSSH は Tatu Ylonen による、フリーな オリジナル版 ssh 1.2.12 リリースから派生したものです。 Aaron Campbell、 Bob Beck、 Markus Friedl、 Niels Provos、 Theo de Raadt および Dug Song が多くのバグをとり除き、 新しい機能をふたたび追加して OpenSSH をつくりました。 SSH プロトコル バージョン 1.5 および 2.0 のサポートは Markus Friedl の貢献によるものです。

日本語訳
新山 祐介 (yusuke @ cs . nyu . edu) 2003/4/17 (for 3.6.1p1)

当マニュアルページは氏のご好意により FreeBSD 日本語マニュアルに収録させていただいています。 翻訳についてのご意見、ご指摘がありましたら新山氏 (yusuke at cs . nyu . edu)、および FreeBSD jpman プロジェクト <man-jp@jp.FreeBSD.org> までお送りください。

関連項目
ssh(1)