SSH_CONFIG(5) | FreeBSD File Formats Manual | SSH_CONFIG(5) |
名称
ssh_config — OpenSSH SSH クライアント設定ファイル書式
~/.ssh/config |
/etc/ssh/ssh_config |
解説
ssh(1) は、次の順序で続くソースから設定データを取得します:
- コマンド行オプション
- ユーザ設定ファイル ( ~/.ssh/config)
- システム全体の設定ファイル ( /etc/ssh/ssh_config)
各パラメータについて、最初に取得された値が使用されます。設定ファイルは、“Host”指定によって区切られたセクションを含み、そのセクションは、指定で与えられたパターンの 1 つと一致するホストに対してのみ適用されます。一致するホスト名は、コマンド行で与えられるホスト名です。
各パラメータに対して最初の取得された値が使用されるので、よりホスト特有の宣言は、ファイルの始めの近くで与えられるべきで、一般的なデフォルトは、終りに与えられるべきです。
設定ファイルには、次の形式があります:
空行と‘ #
’で始まる行は、コメントです。そうでなければ、行は、“キーワード (複数の) 引数”の形式です。設定オプションは、空白類またはオプションの空白類と正確に 1 つの‘ =
’によって区切られます。後の形式は、 ssh, scp と sftp の -o オプションを使用して設定オプションを指定するとき、空白類を引用する必要を避けるために役に立ちます。引数は、空白を含む引数を表すために、二重引用符 (") で囲むことができます。
指定できるキーワードとそれらの意味は、次の通りです (キーワードは、大文字小文字を区別せず、引数は、大文字小文字を区別することに注意してください):
- Host (ホスト)
-
キーワードの後に与えられるパターンの 1 つと一致するそれらのホストのためだけに (次の
Host キーワードまで) 続く宣言を制限します。 1 つ以上のパターンが提供されるなら、それらは、空白類によって区切られるべきです。パターンとしての単一‘
*
’は、すべてのホストのためのグローバルなデフォルトを提供するために使用することができます。ホストは、コマンド行で与えられる hostname 引数です (すなわち、名前は、照合の前に正規化されたホスト名に変換されません)。パターンエントリは、その前に感嘆符 (‘!’) を付けることによって否定されます。否定されたエントリが一致するなら、 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”に設定されている場合は、この検査はおこなわれません。デフォルトでは、これは、“no” (ホスト IP アドレスの検査をおこなわない) になっています。
- Cipher (暗号方式)
- プロトコルバージョン 1 のセッションで暗号化のために使用する暗号方式を指定します。現在、“blowfish”, “3des”と“des”がサポートされています。 des は、 3des 暗号方式をサポートしない、古いプロトコル 1 の実装で相互運用のために ssh(1) クライアントでのみサポートされています。それは、暗号の弱点のためにまったくお勧めできません。デフォルトは、“3des”です。
- Ciphers (複数の暗号方式)
-
優先順位でプロトコルバージョン 2 のために許可された暗号方式を指定します。複数の暗号方式は、コンマで区切られなければなりません。サポートされている暗号方式は、“3des-cbc”, “aes128-cbc”, “aes192-cbc”, “aes256-cbc”, “aes128-ctr”, “aes192-ctr”, “aes256-ctr”, “aes128-gcm@openssh.com”, “aes256-gcm@openssh.com”, “arcfour128”, “arcfour256”, “arcfour”, “blowfish-cbc”と“cast128-cbc”です。デフォルトは、次の通りです:
aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128, aes128-gcm@openssh.com,aes256-gcm@openssh.com, aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc, aes256-cbc,arcfour
- 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”を指定します (これがデフォルト)。これらのセッションは、新しいセッションを開始するよりむしろマスタのインスタンスのネットワーク接続を再利用しようとしますが、制御ソケットが存在していないか、または 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
’は、ローカルホスト名の最初の構成要素に置き換えられ、‘%l
’は、(任意のドメイン名を含む) ローカルホスト名に置き換えられ、‘%h
’は、目ターゲットのホスト名に置き換えられ、‘%n
’は、コマンド行で指定された発信元のターゲットのホスト名に置き換えられ、‘%p
’は、ポート、‘%r
’は、リモートログインのユーザ名に、そして‘%u
’は、 ssh(1) を実行するユーザのユーザ名に置き換えられます。 Master 接続が利用できないときに自動的に新しい接続を作るよう指定した場合 (opportunistic multiplexing)、 ControlPath の値には少なくとも %h、%p と %r のエスケープシーケンスをすべて含めるようにすることが推奨されます。こうすることで、共有する接続を一意に定めることができるからです。 - ControlPersist
- ControlMaster に関連して使用されるとき、初期のクライアント接続がクローズされた後に、マスタ接続がバックグラウンド (将来のクライアント接続を待っている) でオープンされたままで残るべきであることを指定します。“no”に設定されるなら、マスタ接続は、バックグラウンドに置かれないで、初期のクライアント接続がクローズされるとすぐに、クローズします。“yes”に設定されるなら、マスタ接続は、 ( ssh(1) の“ -O exit”オプションのようなメカニズムを通して kill されるか、またはクローズされるまで) 無期限にバックグラウンドのままとなります。秒単位で時間を設定するか、または sshd_config(5) に文書化された正式のいずれかで時間を設定するなら、バックグラウンド化されたマスタ接続は、指定された時間 (クライアント接続なしで) アイドルのまま残された後に、自動的に終了します。
- DynamicForward (動的なポート転送)
-
暗号化された通信路を経由して、ローカルホスト側の TCP/IP ポートを転送するよう指定します。このとき、どのリモートホストから接続するかを決定するためにアプリケーションレベルのプロトコルが使われます。
引数は、[ bind_address:] port でなければなりません。角括弧でアドレスを囲むことによって、IPv6 アドレスを指定することができます。デフォルトで、ローカルのポートは、 GatewayPorts の設定にしたがって bind されます。しかしながら、明示的な bind_address は、特定のアドレスへの接続を bind するために使用されます。“localhost”の bind_address は、listen するポートがローカルの使用だけに bind されることを示し、一方、空のアドレスまたは、‘*’は、ポートがすべてのインタフェースから利用可能であることを示します。
現在、SOCKS4 と SOCKS5 プロトコルがサポートされ、 ssh(1) は、SOCKS4 サーバのように振る舞います。複数の転送を指定でき、コマンド行で追加の転送を与えることができます。 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 オプションも許可されていたとすると、攻撃側はキーストロークを盗み見るなどの行為が可能になってしまうかもしれません。
- ForwardX11Timeout
- sshd_config(5) の「時間の形式」のセクションで説明された形式を使用して、信頼されていない X11 転送のためのタイムアウトを指定します。この時間の後に ssh(1) によって受信された X11 接続は、拒否されます。デフォルトは、20 分が経過した後に、信頼されていない X11 転送を無効にすることです。
- 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 ファイル)
- 空白類によって区切られた、グローバルなホスト鍵データベースのために使用する 1 つ以上のファイルを指定します。デフォルトは、 /etc/ssh/ssh_known_hosts, /etc/ssh/ssh_known_hosts2 です。
- 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 のホスト鍵のアルゴリズムの優先順位を指定します。このオプションのためのデフォルトは、次の通りです:
ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com, ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, ssh-rsa,ssh-dss
ホスト鍵があて先のホストで知られているなら、このデフォルトは、それらのアルゴリズムの方を選ぶように変更されます。
- HostKeyAlias (ホスト鍵のエイリアス)
- ホスト鍵データベースからホスト鍵を検索するとき、またはデータベースにホスト鍵を保存するときに、実際のホスト名のかわりに使われる名前を指定します。このオプションは、SSH 接続をトンネリングしているときや、単一のホスト上で複数の sshd サーバを動かしているときなどに便利です。
- HostName (実際のホスト名)
-
ログインする実際のホスト名を指定します。ホストのためのニックネームまたは省略形を指定するために、これを使用することができます。ホスト名が文字シーケンス‘
%h
’を含んでいるなら、これは、コマンド行で指定されるホスト名に置き換えられます (これは、完全な形でない名前を操作するために役に立ちます)。デフォルトは、コマンド行で与えられる名前です。 (コマンド行と HostName 指定の両方で) 数字の IP アドレスも許可されます。 - IdentitiesOnly (ファイルに格納された秘密鍵のみを使用)
- ssh(1) は、たとえ ssh-agent(1) または PKCS11Provider が、多くの識別 (秘密鍵) を提供しても、 ssh_config ファイルで設定された認証識別 (秘密鍵) ファイルのみを使用するべきであること指定します。このキーワードの引数は、“yes”または“no”でなければなりません。このオプションは、ssh-agent が多くの異なった識別 (秘密鍵) を提供する状況を対象としています。デフォルトは、“no”です。
- IdentityFile (identity ファイル)
-
ユーザの RSA、ECDSA または RSA 認証の識別 (identity, 秘密鍵) が読み込まれるファイルを指定しますデフォルトは、プロトコルバージョン 1 に対しては、
~/.ssh/identity で、プロトコルバージョン 2 に対しては、
~/.ssh/id_dsa,
~/.ssh/id_ecdsa と
~/.ssh/id_rsa です。さらに、認証エージェントによって表現されるあらゆる識別 (identity, 秘密鍵) は、
IdentitiesOnly が設定されていないなら、認証のために使用されます。
ssh(1) は、
-cert.pub を追加することによって得られるファイル名から指定された
IdentityFile のパスまでの証明書の情報をロードしようと試みます。
ファイル名にはユーザのホームディレクトリを参照するチルダ表記か、または次のエスケープ文字の 1 つを使用できます: ‘
%d
’ (ローカルユーザのホームディレクトリ)、‘%u
’ (ローカルユーザ名)、‘%l
’ (ローカルホスト名)、‘%h
’ (リモートホスト名) または‘%r
’ (リモートユーザ名)。設定ファイルに複数の識別 (identity, 秘密鍵) ファイルを入れることができます。これらのすべての識別 (秘密鍵) は、順々に試みられます。複数の IdentityFile 指示は、試みられる識別のリストに追加します (この振る舞いは、他の設定指示のものと異なります)。
IdentityFile は、エージェントの識別子が認証の間に提示され、選択する IdentitiesOnly とともに使用されます。
- IgnoreUnknown
- 設定の解析で遭遇するなら、無視される、未知のオプションのパターンのリストを指定します。これは、 ssh_config が ssh(1) によって認識されないオプションを含んでいるなら、エラーを抑制するために使用されます。設定ファイルに始めにリストされる IgnoreUnknown は、その前に現われる未知のオプションに適用されないことが推奨されます。
- IPQoS
- 接続のための IPv4 のサービスのタイプ (type-of-service) または DSCP のクラスを指定します。受け付けられる値は、“af11”, “af12”, “af13”, “af21”, “af22”, “af23”, “af31”, “af32”, “af33”, “af41”, “af42”, “af43”, “cs0”, “cs1”, “cs2”, “cs3”, “cs4”, “cs5”, “cs6”, “cs7”, “ef”, “lowdelay”, “throughput”, “reliability”または数値です。このオプションは、空白によって区切られた、1 つまたは 2 つの引数を取ります。 1 つの引数が指定されるなら、無条件にパケットのクラスとして使用されます。 2 つの値が指定されるなら、最初は、対話的なセッションに対して、 2 番目は、対話的でないセッションに対して自動的に選択されます。デフォルトは、対話的なセッションに対しては、“lowdelay”で、対話的でないセッションに対しては、“throughput”です。
- KbdInteractiveAuthentication
- キーボード対話式の認証を使用するかどうかを指定します。このキーワードへの引数は、“yes”または“no”でなければなりません。デフォルトは、“yes”です。
- KbdInteractiveDevices (キーボード対話デバイス)
- keyboard-interactive 認証で使用されるメソッドのリストを指定します。複数のメソッド名は、コンマで区切られなければなりません。デフォルトは、サーバで指定されたリストを使用します。サーバが何をサポートするかよって、利用可能なメソッドは、異なります。 OpenSSH サーバでは、次の 0 個以上を指定できます: “bsdauth”, “pam”, と“skey”。
- KexAlgorithms
-
利用可能な KEX (Key Exchange) アルゴリズムを指定します。複数のアルゴリズムは、コンマで区切られていなければなりません。デフォルトは、次の通りです:
ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1, diffie-hellman-group14-sha1, diffie-hellman-group1-sha1
- LocalCommand (ローカルで実行するコマンド)
-
サーバへの接続が成功した後に、ローカルマシン上で実行するコマンドを指定します。コマンド文字列は、行の終わりまでで、ユーザのシェルで実行されます。次のエスケープ文字の置き換えが実行されます: ‘
%d
’ (ローカルユーザのホームディレクトリ)、‘%h
’ (リモートホスト名)、‘%l
’ (ローカルホスト名)、‘%n
’ (コマンド行で提供されるホスト名)、‘%p
’ (リモートポート)、‘%r
’ (リモートユーザ名) または‘%u
’ (ローカルユーザ名)。コマンドは、同時実行され、それをスポン (spawn) した ssh(1) のセッションにアクセスできません。対話的なコマンドに対して使用するべきではありません。
PermitLocalCommand が有効にされていないなら、この指示は、無視されます。
- LocalForward (ローカル ->リモート転送)
- ローカルマシンの TCP ポートを、安全な通信路を経由してリモートマシン上から与えられた host:port に転送するよう指示します (訳注: -L オプションと同じ)。最初の引数は、[ bind_address:] port であり、2番目の引数は、 host: hostport で指定します。角括弧でアドレスを囲むことによって、IPv6 アドレスを指定することができます。複数の転送を指定することができ、コマンド行で追加の転送を与えることができます。特権ポートを転送できるのはスーパユーザだけです。デフォルトでは、ローカル側のポートは、 GatewayPorts の設定に従って bind されますが、 bind_address を明示的に指定することで、特定のアドレスに接続をふり向けることができます。 bind_address として“localhost”を指定すると、ポートを listen するのはローカルな使用のみに限ることになります。いっぽう、空のアドレスまたは‘*’を指定すると、そのポートはすべてのインタフェースに対して使用可能になります。
- LogLevel (ログレベル)
- ssh(1) が出力するログの冗長性のレベルを指定します。指定できる値は、次の通りです: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 と DEBUG3。デフォルトは、INFO です。 DEBUG と DEBUG1 は、同等です。 DEBUG2 と DEBUG3 は、それぞれより高いレベルの冗長な出力を指定します。
- MACs (メッセージ認証コード)
-
MAC (メッセージ認証コード) アルゴリズムの優先順位を指定します。 MAC アルゴリズムは、データの整合性の保護 (data integrity protection) のためにプロトコルバージョン 2 で使用されます。複数のアルゴリズムは、コンマで区切られなければなりません。“-etm”を含んでいるアルゴリズムは、暗号化 (encrypt-then-mac) の後に MAC を計算します。これらは、より安全であると考えられ、それらの使用は、推薦されます。デフォルトは、次の通りです:
hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com, umac-64-etm@openssh.com,umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com, hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com, hmac-md5-96-etm@openssh.com, hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com, hmac-sha2-256,hmac-sha2-512,hmac-ripemd160, hmac-sha1-96,hmac-md5-96
- NoHostAuthenticationForLocalhost (localhost でのホスト認証を抑制)
- このオプションは、ホームディレクトリがマシン間で共有されているときに使います。このような状況ではそれぞれ別々のマシンで localhost の指すホストが異なっているため、ユーザはホスト鍵が変わったという警告を受けてしまいます (訳注: 別々のホスト鍵をもつマシンで同一の localhost ホスト鍵が共有されているため)。このオプションを使うと、相手が localhost のときにはホスト間認証を抑制することができます。この引数がとりうる値は、“yes”または“no”です。デフォルトでは、yes (相手が localhost でも鍵をチェックする) になっています。
- NumberOfPasswordPrompts (パスワード試行回数)
- パスワードを最高何回まで訊くかを指定します。この回数を超えると認証は失敗します。このキーワードには整数を指定する必要があります。デフォルト値は、3 です。
- PasswordAuthentication (パスワード認証)
- パスワード認証をおこなうかどうかを指定します。この引数の値は、“yes”または“no”です。デフォルトでは、“yes” (パスワード認証をおこなう) になっています。
- PermitLocalCommand (ローカルなコマンド実行許可)
- LocalCommand オプションまたは ssh(1) の ! command エスケープシーケンスを使用してローカルコマンドの実行を許可します。引数は、“yes”または“no”でなければなりません。デフォルトは、“no”です。
- PKCS11Provider
- どの PKCS#11 プロバイダを使用するかを指定します。このキーワードへの引数は、PKCS#11 の共有ライブラリです。 ssh(1) は、ユーザの RSA 秘密鍵を提供する PKCS#11 トークンで通信するために使用するべきです。
- Port (ポート番号)
- リモートホストに接続するポート番号を指定します。デフォルトは、22 です。
- PreferredAuthentications (認証の優先順位)
-
クライアントがプロトコル 2 の認証メソッドを試みるべき順序を指定します。これによって、クライアントは、別のメソッド (例えば、
password) よりも特定のメソッド (例えば、
keyboard-interactive) を選ぶことができます。デフォルトは、次の通りです:
gssapi-with-mic,hostbased,publickey, keyboard-interactive,password
- Protocol (プロトコル)
- ssh(1) がサポートするべきプロトコルのバージョンの優先順位を指定します。指定できる値は、‘1’と‘2’です。複数のバージョンは、コンマで区切られなければなりません。このオプションが“2,1”に設定されるとき、 ssh は、バージョン 2 が利用可能でないなら、バージョン 2 を試みて、バージョン 1 に戻ります。デフォルトは、‘2’です。
- ProxyCommand (プロキシコマンド)
-
サーバに接続するのに使用するコマンドを指定します。コマンド文字列は、このキーワード以後、行末まで書くことができます。コマンド文字列は、ユーザのシェルによって実行されます。コマンド文字列の中に、‘
%h
’があると、接続するホスト名で、‘%p
’は、ポートで、‘%r
’は、リモートユーザ名で置換されます。コマンドは基本的に何でもよいのですが、標準入力から読み込み、標準出力に書き込むようなものである必要があります。これは最終的にサーバマシン上で動いている 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 の制限)
- セッション鍵が再交渉される前に転送される最大のデータ量を指定し、オプションでセッション鍵が再交渉される前に渡される最大の時間の量が続きます。最初の引数は、バイト単位で指定され、それぞれ、キロバイト、メガバイトまたはギガバイトを示すために‘K’, ‘M’または‘G’の接尾辞を付けることができます。デフォルトは、暗号によりますが、‘1G’と‘4G’の間です。オプションの 2 番目の値は、秒単位で指定され、 sshd_config(5) の「時間の形式」セクションで文書化されたユニットのうちのいずれかを使用します。 RekeyLimit のためのデフォルト値は、rekey が、暗号のデータのデフォルトの量が送信されるか、または受信された後に、実行され、時間ベースの rekey が行なわれないことを意味する、“default none”です。このオプションは、プロトコルバージョン 2 のみに適用します。
- RemoteForward (リモート ->ローカル転送)
-
リモートマシン上の TCP ポートを、安全な通信路を経由してローカルマシン上から与えられた host:post に転送するよう指示します (訳注: -R オプションと同じ)。最初の引数は、[
bind_address:]
port であり、2 番目の引数は、
host:
hostport で指定します。角括弧でアドレスを囲むことによって、IPv6 アドレスを指定することができます。複数の転送を指定することができ、コマンド行で追加の転送を与えることができます。ルートとしてリモートマシンでログインするときだけ、特権ポートを転送することができます。
port 引数が‘
0
’であるなら、listen (接続を受け付け) ポートは、サーバで動的に割り付けられ、実行時にクライアントに報告されます。デフォルトでは、サーバ側で listen するソケットは、ループバックインタフェースのみに bind されます。これは、 bind_address を指定することによって上書きすることができます。空の bind_address または‘
*
’をアドレスとして指定すると、サーバ側のソケットは、すべてのインタフェースに対して listen するようになります。 bind_address にループバック以外の値が指定できるのは、 GatewayPorts オプションが許可されているときのみです ( sshd_config(5) を参照してください)。 - RequestTTY
- セッションのための疑似 tty を要求するべきかどうか指定します。引数は、次のうちの 1 つです: “no” (TTY を決して要求しません)、“yes” (標準入力が TTY であるとき、常に TTY を要求します)、“force” (常に TTY を要求します) または“auto” (ログインセッションを開始するとき、TTY を要求します)。このオプションは、 ssh(1) のための -t と -T フラグと同様です。
- 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 のみに適用されます。
- 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” (レイヤ 3)、“ethernet” (レイヤ 2) または“no”でなければなりません。“yes”と指定することは、“point-to-point”であるデフォルトのトンネルモードを要求します。デフォルトは、“no”です。
- TunnelDevice (トンネリングするデバイス)
-
クライアント (
local_tun) とサーバ (
remote_tun) でオープンするための
tun(4) デバイスを指定します。
引数は、 local_tun[ : remote_tun]でなければなりません。デバイスには、数字の ID、または、次に利用可能なトンネルデバイスを使用するキーワード“any”を指定します。 remote_tun が指定されないなら、“any”をデフォルトとします。デフォルトは、“any:any”です。
- UsePrivilegedPort (特権ポートを使用する)
- 外に向けての接続をおこなうときに、特権ポートを使用するかどうかを指定します。この引数の値は、“yes”または“no”で、デフォルトは、“no”になっています。“yes”に設定した場合、 ssh(1) は、 setuid root である必要があります。注意: 旧式の sshd に対して RhostsRSAAuthentication 認証が必要な場合は、このオプションを“yes”にする必要があります。
- User (ユーザ)
- ログインするユーザ名を指定します。これは異なるマシン上で異なるユーザ名が使われている場合に便利です。これでコマンド行からわざわざユーザ名を与えなくてもすみます。
- UserKnownHostsFile (ユーザ known_hosts ファイル)
- 余白類によって区切られた、ユーザホスト鍵データベースのために使用する 1 つ以上のファイルを指定します。デフォルトは、 ~/.ssh/known_hosts, ~/.ssh/known_hosts2 です。
- VerifyHostKeyDNS (ホスト鍵の DNS を検証する)
-
DNS と SSHFP リソースレコードを使用して、リモートの鍵を検証するかどうかを指定しますこのオプションが“yes”に設定されているなら、クライアントは、DNS からの安全な指紋と一致する鍵を暗黙に信頼します。安全でない指紋は、あたかも、このオプションが“ask”と設定されていたかのように扱われます。このオプションが“ask”に設定されているなら、一致した指紋に関する情報が表示されますが、ユーザは、それでも
StrictHostKeyChecking オプションにしたがって新しいホスト鍵を確認する必要があります。引数は、“yes”、“no”または“ask”でなければなりません。デフォルトは、LDNS を付けてコンパイルされているなら、“yes”で、そうでなければ、“no”です。このオプションは、プロトコルバージョン 2 のみに適用されることに注意してください。
また、 ssh(1) の「ホスト鍵の検証」を参照してください。
- VersionAddendum (バージョンの付録)
- OS 特有またはサイト特有の修正を識別するために、通常のバージョン文字列に付け加える文字列を指定します。デフォルトは、“FreeBSD-20131111”です。
- VisualHostKey
- このフラグが“yes”に設定されるなら、リモートホスト鍵指紋の ASCII アート表現は、未知のホスト鍵のためにログイン時の 16 進数の指紋文字列に加えて印刷 (表示) されます。このフラグが“no”に設定されるなら、指紋文字列は、ログイン時に印刷されません、そして 16 進数の指紋文字列だけが未知のホスト鍵のために印刷されます。デフォルトは、“no”です。
- XAuthLocation (xauth の位置)
- xauth(1) プログラムのフルパス名を指定します。デフォルトは、 /usr/local/bin/xauth です。
パターン
パターン は、0 個以上の非空白類文字、‘*’ (0 個以上の文字に適合するワイルドカード)、または‘?’ (正確に 1 文字に適合するワイルドカード) から成ります。例えば、ドメインの“.co.uk”集合で任意のホストのための 1 組の宣言を指定するために、次のパターンを使用することができます:
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 を作成しました。 Markus Friedl は、SSH プロトコルバージョン 1.5 と 2.0 のためのサポートを寄贈しました。June 27, 2013 | FreeBSD |