SSH_CONFIG(5)

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

書式
~/.ssh/config
/etc/ssh/ssh_config

説明
ssh(1) は以下のものから (この順序で) 設定情報を取得します:

1.  コマンドラインオプション
2.  ユーザごとの設定ファイル (~/.ssh/config)
3.  システム全体にわたる (system-wide) 設定ファイル (/etc/ssh/ssh_config)

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

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

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

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

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

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

    パターン (ワイルドカード文字) についての詳細は パターン の項を参照してください。

AddressFamily (アドレスファミリ)
    接続時にどのアドレスファミリを利用するかを指定します。 指定できる値は “any 、” “inet” (IPv4 のみを使用する) または “inet6” (IPv6 のみを使用する) のいずれかになります。

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

BindAddress (bind するアドレス)
    ローカルマシン上で、指定されたアドレスを接続のソース側アドレスとして使用します。 この機能が有用なのは、複数のIPアドレスをもっているマシン上のみです。 この設定は UsePrivilegedPort 項目が “yes” になってるときは機能しないので注意してください。

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

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

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

Ciphers (複数の暗号方式)
    プロトコル バージョン 2 で使う暗号方式の 優先順位を指定します。複数の暗号方式をカンマで区切って指定します。 現在のところ、サポートされている暗号方式は以下のとおりです: “3des-cbc”, “aes128-cbc”, “aes192-cbc”, “aes256-cbc”, “aes128-ctr”, “aes192-ctr”, “aes256-ctr”, “arcfour128”, “arcfour256”, “arcfour”, “blowfish-cbc”, および “cast128-cbc 。” デフォルトは:

        aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,
        arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr,
        aes192-ctr,aes256-ctr

    の順になっています。

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

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

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

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

ConnectTimeout (接続タイムアウト)
    SSH サーバに接続するときのタイムアウト時間を秒数で指定します。 デフォルトの TCP タイムアウト時間に代わってこの値が使われます。 この値は相手先ホストがダウンしているときか実際に到達不可能なときに使用され、 接続が拒否されたときには使用されません。

ControlMaster
    単一のネットワーク接続で、複数のセッションを共有します。 これが “yes” に設定されている場合、 ssh(1) は 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 (動的なポート転送)
    暗号化された通信路を経由して、ローカルホスト側の TCP ポートを 転送するよう指定します。このとき、どのリモートホストから 接続するかを決定するためにアプリケーションレベルのプロトコルが 使われます。

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

ExitOnForwardFailure (転送できない場合に終了)
    要求された (ローカル、リモート、あるいはダイナミック) ポート転送すべてを設定できない場合に、 ssh(1) を終了すべきかどうかを指定します。引数は “yes” あるいは “no” のどちらかで、デフォルトは “no (転送できない場合にも終了しない)” です。

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

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

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

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

ForwardX11Trusted (信頼された X11 転送)
    この項目が “yes” の場合、リモートの X11 クライアントは元の X11 ディスプレイに対する 完全なコントロールが可能になります。

    この項目が “no” に設定されている場合、リモートの X11 クライアントは信頼できないとみなされ、 信頼された X11 クライアントに属するデータを盗み見たり改竄したりすることはできません。 さらに、このセッションで使われる xauth(1) トークンは 20 分後に期限が切れるよう設定されており、 リモート側のクライアントは、この時間を過ぎるとアクセスを拒否されるようになります。

    デフォルトでは “no” になっています。

    信頼できないクライアントに課される制限についての完全な情報は、 X11 SECURITY 拡張機能の仕様書を参照してください。

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

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

GSSAPIAuthentication (GSSAPI 認証)
    GSSAPI ベースの認証をおこなうかどうかを指定します。 デフォルトの値は “no” です。 注意: この項目はプロトコル バージョン 2 にのみ適用されます。

GSSAPIDelegateCredentials (証明書の転送)
    証明書 (credential) をサーバに転送 (委譲) するかどうかを指定します。 デフォルトは “no” になっています。 注意: この項目はプロトコル バージョン 2 にのみ適用されます。

HashKnownHosts (known_hostsをハッシュする)
    ssh(1) が新しいホストを ~/.ssh/known_hosts に追加するとき、そのホスト名および IP アドレスをハッシュするよう指定します。 これらのハッシュされた名前は ssh(1) および sshd(8) によって使われますが、たとえこれらの情報が見られても 識別可能な情報が明らかになることはありません。 この値は、デフォルトでは “no” になっています。すでに known_hosts 中にある名前に対して、 あとからハッシュ化が適用されることはありませんが、 ssh-keygen(1) を使えばこれらも手動でハッシュすることができます。

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

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

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

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

IdentitiesOnly (ファイルに格納された秘密鍵のみを使用)
    認証の際に、たとえ認証エージェント ssh-agent(1) が複数の秘密鍵を持っていた場合でも、 ssh_config ファイルで指定された秘密鍵のみを使用するよう指定します。 この引数のとりうるキーワードは “yes” または “no” です。 この項目を使うのは、ssh-agent が 多くの異なる秘密鍵を返すような状況でしょう。 デフォルトでは “no” になっています。

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

    ユーザのホームディレクトリを表すのにチルダ表記や、以下の エスケープ文字を使うこともできます: ‘%d’ (ローカルユーザのホームディレクトリ)、 ‘%d’ (ローカルのユーザ名)、 ‘%l’ (ローカルホスト名)、 ‘%h’ (リモートホスト名)、あるいは ‘%r’ (リモートのユーザ名)。

    設定ファイルでは複数の identity を指定することもでき、 この場合すべての identity が順に試されます。

KbdInteractiveDevices (キーボード対話デバイス)
    keyboard-interactive 認証で使われる入力方法を指定します。 複数の入力方法を指定する場合は、カンマで区切ってください。 デフォルトではサーバが提供した方法の一覧を使用します。 どの方法が使用できるかは、サーバのサポートによります。 OpenSSH サーバの場合、これは以下の組み合わせになります: it may be zero or more of: “bsdauth 、” “pam 、” および “skey 。”

LocalCommand (ローカルで実行するコマンド)
    サーバへのログインが成功したあとにローカルマシン上で実行する コマンドを指定します。この行の終端までがコマンド文字列とみなされ、 これは /bin/sh で実行されます。 PermitLocalCommand が許可されていない場合、この項目は無視されます。

LocalForward (ローカル→リモート転送)
    ローカルマシンの TCP ポートを、安全な通信路を経由して リモートマシン上から与えられた host:port に転送するよう指示します (訳注: -L オプションと同じ)。 最初の引数は [bindするアドレス:]ポート であり、2 番目の引数は ホスト名:ホスト側ポート で指定します。 IPv6 アドレスは角カッコで囲むか、これとは別の形式で指定します: [bindするアドレス/] ポート および ホスト名/ホスト側ポート ポート転送は複数指定することができ、 コマンドラインから追加指定することもできます。 特権ポートを転送できるのはスーパーユーザだけです。 デフォルトでは、ローカル側のポートは GatewayPorts の設定に従って bind されますが、 bindするアドレス を明示的に指定することで、特定のアドレスに接続をふり向けることができます。 bindするアドレス として “localhost” を指定すると、ポートを listen するのはローカルな使用のみに限ることになります。 いっぽう、空のアドレスまたは ‘*’ を指定すると、そのポートはすべてのインターフェイスに対して使用可能になります。

LogLevel (ログレベル)
    ssh(1) が出力するログの冗長性のレベルを指定します。 とりうる値は次のとおりです: 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” です。 デフォルトでは、相手が localhost でも鍵をチェックするようになっています。

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

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

PermitLocalCommand (ローカルなコマンド実行許可)
    LocalCommand 設定項目か、あるいは ssh(1) の !コマンド エスケープシーケンスを使ったローカルなコマンド実行を許可します。 引数の値は “yes” あるいは “no” でなければならず、デフォルトは “no” です。

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

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

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

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

    この設定項目は、 nc(1) のプロキシ・サポートと組み合わせて使うのに有用です。 たとえば、以下の設定では 192.0.2.0 の HTTP プロキシ経由で接続します:

        ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p

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

RekeyLimit (rekey の制限)
    セッション鍵が再生成される (rekey) までに 許される最大のデータ量を指定します。 この引数の値はバイト数で指定し、サフィックスとして ‘K’ 、 ‘M’ 、あるいは ‘G’ を使うことができます。 それぞれ、キロバイト(K)、メガバイト(M)、ギガバイト(G) を表します。 デフォルトは暗号方式によりますが ‘1G’ から ‘4G’ までの間です。 この設定項目はプロトコル バージョン 2 にのみ適用されます。

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

    デフォルトでは、サーバ側で listen するソケットは ループバックインターフェイスにのみ bind されます。 これは bindするアドレス を指定することによって上書きすることができます。 空の bindするアドレス または ‘*’ をアドレスとして指定すると、サーバ側のソケットは すべてのインターフェイスに対して listen するようになります。 bindするアドレス にループバック以外の値が指定できるのは、 GatewayPorts 設定項目が許可されているときのみです ( sshd_config(5) を参照してください)。

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

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

SendEnv (環境変数を送信)
    ローカルな環境変数 ( environ(7) ) のうち、どれをサーバに送信すべきかを設定します。 注意: 環境変数の受け渡しがサポートされているのは プロトコル バージョン 2 のみで、サーバがこれをサポートするように なっており、なおかつそれらの環境変数を許可するよう設定されているときだけです。 サーバ側の設定については、 sshd_config(5) にある AcceptEnv を参照してください。 変数は名前によって指定されます。 この名前にはワイルドカード文字を含むことができます。 複数の環境変数を指定する場合は空白によって区切るか、 複数の SendEnv 項目を指定することができます。 デフォルトでは、どの環境変数も送られないようになっています。

    ワイルドカード文字の詳細については パターン を参照してください。

ServerAliveCountMax (サーバ生存カウント最大値)
    ssh(1) がサーバからの返答を確認するまでに、サーバ生存確認メッセージ (下記参照) を何回まで送るかを指定します。 この回数が指定された数値を超えると、 ssh はサーバ側との接続を切断し、セッションを終了させます。 重要なのは、サーバ生存確認メッセージは以下に記されている TCPKeepAlive とはまったく違うということです。 サーバ生存確認メッセージは暗号化された通信路を経由して送られるので、 偽装可能ではありません。これに対して、 TCPKeepAlive で指定される TCP の keepalive オプションは偽装が可能です。 このサーバ生存確認の機構は、クライアントまたはサーバ側が、 いつ接続が切れたかを知りたいときに有用です。

    このデフォルト値は、 3 です。たとえばもし、 ServerAliveInterval (下記) が 15 に設定されており、 ServerAliveCountMax がデフォルトのままだったとしたら、ssh は サーバが応答しなくなった後およそ 45 秒後に接続を切断します。 この設定項目はプロトコル バージョン 2 にのみ適用されます。

ServerAliveInterval (サーバ生存確認の間隔)
    一定期間サーバからデータが送られてこないときに、 タイムアウトする秒数を設定します。この場合 ssh(1) は暗号化された通信路を介してサーバ側に 返答を要求するメッセージを送ります。 デフォルトは 0 で、これはこのようなメッセージをサーバ側に送らないことを指示しています。 この設定項目は プロトコル バージョン 2 でのみ有効です。

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

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

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

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

    TCP Keepalive メッセージを禁止するには、この値を “no” にする必要があります。

Tunnel (トンネリングの指定)
    クライアントとサーバ間で tun(4) デバイスの転送を要求します。 とりうる値は “yes” 、 “point-to-point” (layer 3)、 “ethernet” (layer 2) あるいは “no” です。 “yes” を指定するとデフォルトのトンネリング方法として “point-to-point” を使用します。 デフォルトでは “no” になっています。

TunnelDevice (トンネリングするデバイス)
    トンネリングに使う tun(4) デバイスをクライアント側で (ローカルtun) に、サーバ側で (リモートtun) に強制的に指定します。

    この引数は ローカルtun[:リモートtun] の形である必要があります。 デバイス名にはインターフェイス番号か、キーワード “any” を指定します。これを指定すると 次に使用可能なデバイスが選択されることになります。 リモートtun が指定されない場合、これは “any” とみなされます。 この設定項目のデフォルト値は “any:any” です。

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

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

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

VerifyHostKeyDNS (DNSでホスト鍵を確認する)
    DNS と SSHFP 資源レコードを使って、 リモートホストの公開鍵を検証するかどうかを指定します。 この設定項目が “yes” に設定されていると、クライアントは暗黙のうちに DNS 上の安全な指紋に一致する鍵を信頼するようになります。 安全でない指紋については、この設定項目を “ask” とすることによって扱います。 この設定項目が “ask” に設定されていると、一致した指紋に関する情報が表示されますが、 それでもユーザは StrictHostKeyChecking 設定項目に従って新しいホスト鍵を確認しなければなりません。 この設定項目がとりうる値は “yes” 、 “no” あるいは “ask” です。デフォルトでは “no” になっています。 注意: この設定項目はプロトコル バージョン 2 にのみ適用されます。

    ssh(1) の ホスト鍵の検証 も参照してください。

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

パターン
パターン は、0 個以上の非空白文字か、 ‘*’ (0 個または以上の任意の文字に一致する) あるいは ‘’? (任意の 1 文字だけに一致する) によって構成されます。たとえば、 “.co.uk” ドメインの任意のホストに適用される宣言を指定したい場合には、 以下のようなパターンが使えます:

    Host *.co.uk

以下のパターンはアドレス範囲が 192.168.0.[0-9] にある 任意のホストに一致します:

    Host 192.168.0.?

パターン列 はカンマ (,) で区切られたパターンの列をさします。 パターン列中の各パターンは、先頭に感嘆符 (‘’)! をつけることによって否定を表すことができます。 たとえば、ある組織内の “dialup” プール以外から接続してきた場合に鍵の使用を許可する場合、 (authorized_keys ファイルで) 以下のようなエントリを使うことができます:

    from="!*.dialup.example.com,*.example.com"

関連ファイル

~/.ssh/config
    ユーザごとの個人用設定ファイルです。 ファイル形式は上で説明されています。 このファイルは SSH クライアントによって使われます。 このファイルは潜在的に悪用される危険性があるため、 パーミッションは厳しくしておくのがいいでしょう。 所有者のみが読み書き可能で、他からはアクセスできないようにしておくべきです。

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

関連項目
ssh(1)

作者
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 の貢献によるものです。