SSH_CONFIG (5)

OpenSSH-5.1p1 日本語マニュアルページ (2008/10/03)


名前

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

書式

~/.ssh/config /etc/ssh/ssh_config

説明

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

コマンドラインオプション

ユーザごとの設定ファイル
~/.ssh/config

システム全体にわたる (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 が順に試されます。

KbdInteractiveAuthentication (キーボード対話的認証)
キーボード対話的認証を使用するかどうかを指定します。このキーワードの引数は"yes"または"no"です。デフォルトは"yes"です。

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

LocalCommand (ローカルで実行するコマンド)
サーバへのログインが成功したあとにローカルマシン上で実行するコマンドを指定します。この行の終端までがコマンド文字列とみなされ、これはそのユーザのシェルによって実行されます。コマンド文字列では、以下のようなエスケープ文字が使用できます: %d (ローカル側でのホームディレクトリ), %h (リモート側でのホームディレクトリ), %l (ローカル側のホスト名), %n (コマンドラインで指定されたホスト名), %p (リモート側のポート), %r (リモート側のユーザ名)あるいは %u (ローカル側のユーザ名)。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,umac-64@openssh.com,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 (プロキシ コマンド)
サーバに接続するのに使用するコマンドを指定します。コマンド文字列はこのキーワード以後、行末まで書くことができます。コマンド文字列は、そのユーザのシェルによって実行されます。コマンド文字列では、 %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)ホスト鍵の検証も参照してください。

VisualHostKey
この項目が"yes"に設定されている場合、16進数表示のリモートホストの鍵の指紋に加えて、それをアスキーアートで表現したものが表示されます。この項目が"no"の場合は、16進表示の指紋のみが表示されます。デフォルトは"no"です。

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