2022.04.07  

【paramiko】disabled_algorithmsの説明

Python,  Paramiko    

paramiko(ver:2.9.2)のconnect関数で使用できる引数disabled_algorithmsの説明をメモ書きします。

私の解釈ではdisabled_algorithmsに指定したアルゴリズムは使用せず、_preferred_keys に登録されたその他のアルゴリズムを使用するといった動きだと思っています。

コード使用例

import paramiko

IP = '10.22.33.123'
PORT = '22'
USER = 'centos'
KEY_FILE = '/Users/user/.ssh/mykey.pem'

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

rsa_key = paramiko.RSAKey.from_private_key_file(KEY_FILE)

client.connect(IP, PORT, USER, pkey=rsa_key, timeout=5.0, look_for_keys=False,
                          disabled_algorithms=dict(pubkeys=['rsa-sha2-256', 'rsa-sha2-512']))
                          # ↑ ここの処理

paramikoのtransport.pyのコメントを確認

        :param dict disabled_algorithms:
            If given, must be a dictionary mapping algorithm type to an
            iterable of algorithm identifiers, which will be disabled for the
            lifetime of the transport.

            Keys should match the last word in the class' builtin algorithm
            tuple attributes, such as ``"ciphers"`` to disable names within
            ``_preferred_ciphers``; or ``"kex"`` to disable something defined
            inside ``_preferred_kex``. Values should exactly match members of
            the matching attribute.

            For example, if you need to disable
            ``diffie-hellman-group16-sha512`` key exchange (perhaps because
            your code talks to a server which implements it differently from
            Paramiko), specify ``disabled_algorithms={"kex":
            ["diffie-hellman-group16-sha512"]}``.

翻訳

与えられた場合、辞書マッピングアルゴリズムタイプである必要があります
アルゴリズム識別子の反復可能。これは、輸送の寿命。

キーは、クラスの組み込みアルゴリズムの最後の単語と一致する必要があります
内の名前を無効にする``"暗号"``などのタプル属性
`` _preferred_ciphers``; または``"kex" ``は、定義されたものを無効にします
``_preferred_kex``内。 値はのメンバーと完全に一致する必要があります
一致する属性。

たとえば、無効にする必要がある場合
`` diffie-hellman-group16-sha512``鍵交換(おそらく
 コードは、それを実装するサーバーとは異なる方法でサーバーと通信します
Paramiko)、「disabled_algorithms = {"kex"」を指定します:
["diffie-hellman-group16-sha512"]}``。

paramikoのtransport.pyの一部コードを抜粋

   # ~= HostKeyAlgorithms in OpenSSH land
    _preferred_keys = (
        "ssh-ed25519",
        "ecdsa-sha2-nistp256",
        "ecdsa-sha2-nistp384",
        "ecdsa-sha2-nistp521",
        "rsa-sha2-512",
        "rsa-sha2-256",
        "ssh-rsa",
        "ssh-dss",
    )
    # ~= PubKeyAcceptedAlgorithms
    _preferred_pubkeys = (
        "ssh-ed25519",
        "ecdsa-sha2-nistp256",
        "ecdsa-sha2-nistp384",
        "ecdsa-sha2-nistp521",
        "rsa-sha2-512",
        "rsa-sha2-256",
        "ssh-rsa",
        "ssh-dss",
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信