OpenSSHがどの鍵交換方式を使用するかをどのように決定するかを理解しようとしています。メソッドの指定方法がわかりません。さらに、すべてのsshサーバー/クライアントが 必須 であり、少なくとも2つのメソッドdiffie-helleman-group1-sha1
とdiffie-helleman-group14-sha1
をサポートしていることを知っていますが、サーバーとクライアントの選択方法がわかりません各プログラムが両方をサポートする必要があることを考えると、2つの間。 MODPグループが大きいため、すべての場合でdiffie-helleman-group14-sha1
が使用されると思います。
暗号とMACを指定できます。
ssh <user@ip> -c aes256-cbc -m hmac-sha1
しかし、マンページを見ると、鍵交換に相当するオプションがありません。誰か1)これを指定する方法を教えてください2)sshがメソッドを選択する方法を説明できますか? (私はそれが常にリストの最初を選ぶと思います、つまり、2番目は決して、決して選択されないことを意味します)
OpenSSH 5.7KexAlgorithms
オプションが導入されました:
ssh(1)/sshd(8): add a KexAlgorithms knob to the client and server
configuration to allow selection of which key exchange methods are
used by ssh(1) and sshd(8) and their order of preference.
したがって、少なくともそのバージョンがある場合は、-oKexAlgorithms=<kex_list>
を使用して設定を指定します。
AFAICT、OpenSSHクライアントは実際にネゴシエートされたkexアルゴリズムを出力しませんが、-vv
とkex_parse_kexinit
行では、クライアントでサポートされているkexアルゴリズムのリスト(および暗号化、MACなどのアルゴリズムのリスト)に続いてサーバーでサポートされているリストを確認できます。理論的には、クライアントは、サーバーのリストにも表示されるそのリストの最初のアルゴリズムを選択します(つまり、選択はクライアントの設定を優先します)。クライアントリストa,b,c
およびサーバーリストc,b
、クライアントはアルゴリズムb
を選択します。