メインコンテンツまでスキップ

4. Connection Setup (接続の確立)

4. Connection Setup (接続の確立)

SSH は, 任意の 8 ビットクリーンでバイナリ透過的なトランスポート (transport) の上で動作します。下位のトランスポートは伝送エラーから保護すべきです (SHOULD). そのようなエラーは SSH 接続を終了させます。

接続はクライアントが開始します。

4.1. Use over TCP/IP (TCP/IP 上での使用)

TCP/IP 上で使用する場合, サーバーは通常ポート 22 で接続を待ち受けます。このポート番号は IANA に登録されており, SSH に正式に割り当てられています。

4.2. Protocol Version Exchange (プロトコルバージョン交換)

接続が確立されたら, 両側は識別文字列 (identification string) を送信しなければなりません (MUST). この識別文字列は次の形式でなければなりません (MUST).

SSH-protoversion-softwareversion SP comments CR LF

この一連の文書で定義されているプロトコルはバージョン 2.0 であるため, 'protoversion' は "2.0" でなければなりません (MUST). 'comments' 文字列は任意です (OPTIONAL). 'comments' 文字列が含まれる場合, 'softwareversion' と 'comments' 文字列を区切るために空白文字 (上記では SP と表記, ASCII 32) を使用しなければなりません (MUST). 識別は単一のキャリッジリターン (CR, Carriage Return) と単一のラインフィード (LF, Line Feed) 文字 (それぞれ ASCII 13 と 10) で終了しなければなりません (MUST). このプロトコルの古い文書化されていないバージョンとの互換性を維持したい実装者は, 本文書のセクション 5 で説明されている理由により, キャリッジリターン文字の存在を期待せずに識別文字列を処理したい場合があります。NULL 文字を送信してはなりません (MUST NOT). 文字列の最大長は, キャリッジリターンとラインフィードを含めて 255 文字です。

キャリッジリターンとラインフィードの前の識別文字列の部分は, Diffie-Hellman 鍵交換 (key exchange) で使用されます (セクション 8 を参照).

サーバーは, バージョン文字列を送信する前に他のデータ行を送信してもかまいません (MAY). 各行はキャリッジリターンとラインフィードで終了すべきです (SHOULD). これらの行は "SSH-" で始まってはなりません (MUST NOT), ISO-10646 UTF-8 [RFC3629] でエンコードされるべきです (SHOULD) (言語は指定されません). クライアントはこれらの行を処理できなければなりません (MUST). これらの行は静かに無視されてもよく (MAY), またはクライアントユーザーに表示されてもかまいません (MAY). 表示する場合は, [SSH-ARCH] で説明されている制御文字フィルタリング (control character filtering) を使用すべきです (SHOULD). この機能の主な用途は, TCP-wrappers が切断前にエラーメッセージを表示できるようにすることです。

'protoversion' と 'softwareversion' 文字列は両方とも, 空白文字とマイナス記号 (-) を除いて, 印刷可能な US-ASCII 文字で構成されていなければなりません (MUST). 'softwareversion' 文字列は主に互換性拡張をトリガーし, 実装の機能を示すために使用されます。'comments' 文字列には, ユーザーの問題解決に役立つ可能性のある追加情報を含めるべきです (SHOULD). したがって, 有効な識別文字列の例は次のとおりです.

SSH-2.0-billsSSH_3.6.3q3<CR><LF>

この識別文字列にはオプションの 'comments' 文字列が含まれていないため, 'softwareversion' 文字列の直後に CR と LF で終了します。

鍵交換は, この識別子の送信後すぐに開始されます。識別文字列に続くすべてのパケットは, セクション 6 で説明されているバイナリパケットプロトコル (binary packet protocol) を使用するものとします (SHALL).