リモート ホストへの最初の接続中にホスト鍵を受信し (または、ホスト鍵が変更され)、その鍵の保存を選択すると、そのファイル名はハッシュ化された形式 (keys_hhh...
) で保存されます。ここで、hhh
はホストのポートと名前のハッシュです。保存されたファイルには、ホストの公開鍵のハッシュが含まれます。ハッシュの計算には salt が含まれます。salt の値は、ホスト鍵と同じディレクトリ (UNIX では $HOME/.ssh2/hostkeys
、Windows では %APPDATA%\SSH\HostKeys
) 内のファイル salt
に保存されます。ハッシュ化されたホスト鍵形式は、ホストでのアドレスの取り込みを困難にするためのセキュリティ機能です。
従来の平文形式では、ホスト鍵ファイルの名前にホストの名前とポートが含まれ (key_22_host.example.com.pub
など)、そのファイルにホストの公開鍵が平文形式で含まれます。
この保存形式は、ssh-broker-config.xml
設定ファイルの known-hosts
エレメントの filename-format
属性を使用して制御できます。この属性値は、plain
または hash
(デフォルト) にする必要があります。詳細については、known-hostsを参照してください。
<known-hosts path="$HOME/.ssh2/hostkeys" filename-format="plain" />
鍵を手動で追加する場合は、その鍵に key_<port>_<host>.pub
のパターンを使用して名前を付ける必要があります。ここで、<port>
は SecureShell サーバが実行されているポートであり、<host>
は、そのサーバに接続するときに使用するホスト名 (key_22_alpha.example.com.pub
など) です。
ハッシュ化された形式と平文形式の両方の鍵が存在する場合は、ハッシュ化された形式が優先されます。
ホストの識別は、クライアントの接続先のホスト名とポートに応じて異なることに注意してください。ホスト名の形式には、完全修飾ドメイン名 (FQDN)、短いホスト名、IP アドレスの 3 種類があります。これらの形式は相互に交換できないため、名前の形式ごとにホスト鍵を個別に保存する必要があります。
ホスト鍵は、ログインで使用されたホスト名の形式で保存されます。たとえば、alpha
という名前のリモート ホストに接続するときにすべてのホスト名の形式を使用する場合は、まず以下のコマンドを使用してホストに接続し、3 つのすべての名前でホスト鍵を保存します。
sshg3 user@alpha
短いホスト名を含む鍵を生成します (平文形式では key_22_alpha.pub
)
sshg3 user@alpha.example.com
FQDN を含む鍵を生成します (平文形式では key_22_alpha.example.com.pub
)
sshg3 user@10.1.101.10
IP アドレスを含む鍵を生成します (平文形式では key_22_10.1.101.10.pub
)
また、同じホストの異なるポートに接続する必要がある場合も、その目的のための別のホスト鍵 (たとえば、key_22_alpha.pub
と key_222_alpha.example.com.pub
) がクライアントに必要になります。
最初の接続の後は、ローカルに保存されたサーバ公開鍵に関する情報がサーバ認証で使用されます。