Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZユーザーの認証

Junos PyEZ アプリケーションは、パスワードまたはその他の標準的な SSH 認証 メカニズムを使用してユーザーを認証できます。

Junos PyEZユーザー認証の概要

Junos PyEZでは、シリアルコンソール接続、Telnet、またはSSH経由のNETCONFセッションを使用して、Junosデバイスに直接接続し、管理することができます。Junos PyEZは、デバイスの CONSOLE ポートに接続されたコンソールサーバーへのTelnetまたはSSH接続を介したデバイスへの接続もサポートしています。さらに、Junos PyEZは、要塞ホストやジャンプホストなどの中間デバイスを介してデバイスに接続できます。

リモートデバイスは、接続方法に応じて、パスワードまたはその他の標準的なSSH認証メカニズムを使用してユーザーを認証できる必要があります。SSH 接続を介して Junos デバイスを管理する場合、デバイスにアクセスする最も便利で安全な方法は、SSH キーを設定することです。SSHキーにより、リモートデバイスは信頼できるユーザーを識別できます。

管理対象のJunosデバイスにアクセスできる任意のユーザーアカウントを使用して、デバイスの操作を実行できます。 jnpr.junos.device.Device クラスの新しいインスタンスを作成するときに、ユーザーを明示的に定義できます。ユーザーを指定しない場合、ユーザーはデフォルトで $USER 環境変数の値になります。

SSH接続の場合、Junos PyEZは、~/.ssh/configにあるデフォルトのSSH設定ファイル(存在する場合)に自動的にクエリーを実行します。また、Device引数リストにssh_configを含めて、別の設定ファイルを指定することもできます。Junos PyEZは、ユーザーやIDファイルなど、Device引数リストの引数によって上書きされないSSH設定ファイルの関連設定を使用します。

SSH を使用してデバイスに接続する場合、Junos PyEZ はまず SSH 公開鍵ベースの認証を試み、次にパスワードベースの認証を試みます。パスワードベースの認証を使用する場合、提供されたパスワードがデバイスパスワードとして使用されます。SSHキーが使用されている場合、提供されたパスワードがプライベートキーのロックを解除するためのパスフレーズになります。SSHキーエージェントにキーをロードする場合、またはSSHプライベートキーのパスフレーズが空の場合は、パスワードを指定する必要はありません。ただし、空のパスフレーズでSSHプライベートキーを使用することはお勧めしません。

注:

環境に適した安全な方法で資格情報を取得します。ベストプラクティスとして、認証情報を暗号化されていない形式で保存するのではなく、スクリプトを実行するたびに認証情報の入力を求めます。

以下のセクションでは、さまざまな認証方法について説明します。

パスワードを使用して Junos PyEZ ユーザーを認証する

パスワードを使用してJunos PyEZユーザーを認証するには:

  1. お気に入りのエディターで、 .py ファイル拡張子を使用する新しいファイルを作成します。

    この例では、ファイル名 junos-pyez-pw.py を使用しています。

  2. 接続するホスト名またはIPアドレス、およびJunosデバイスのユーザー名とパスワードの入力を求めるコードを含めます。
  3. Junos PyEZクライアントがコンソールサーバーへのSSH接続を介してデバイスに接続する場合は、コンソールサーバーのユーザー名とパスワードの入力を求めます。
  4. Junos PyEZクライアントがデフォルトとは異なるポートに接続した場合は、ポート番号の入力を求めます。
  5. Device コンストラクター引数リスト内:
    • host引数を、リモートデバイスのホスト名またはIPアドレスを含む変数に設定します。

    • user引数とpasswd引数を、Junos OSログイン資格情報を含む変数に設定します。

    • Junos PyEZクライアントがSSH接続を介してコンソールサーバーに接続する場合は、コンソールサーバーのログイン資格情報を含む変数に cs_user 引数と cs_passwd 引数を設定します。

    • Junos PyEZクライアントがデフォルト以外のポートに接続する場合は、必要に応じて port 引数をポートを含む変数に設定します。

    • 接続方法に必要な追加の引数を含めます。

    次の例は、それぞれの接続方法のサンプルコードを示しています。

    注:

    Junos OSを実行しているすべてのプラットフォームでは、デフォルトでrootユーザーのみが設定されており、パスワードは設定されていません。Junos PyEZを使用して、コンソール接続を介して新しいデバイスまたはゼロ化されたデバイスを最初に設定する場合は、 user='root'を使用し、 passwd パラメーターを省略します。

  6. Junos PyEZコードを実行します。

    プログラムは、ホスト名、Junos OSのユーザー名とパスワード、コンソールサーバーのユーザー名とパスワード(要求された場合)、およびポート(要求された場合)の入力を求めます。プログラムはコマンドラインのパスワードをエコーしません。

SSHキーを使用してJunos PyEZユーザーを認証する

Junos PyEZ アプリケーションで SSH キーを使用するには、まず構成管理サーバーでキーを生成する必要があります。次に、Junos PyEZクライアントが接続する各デバイスで公開キーを設定します。デバイスには、Junosデバイス、コンソールサーバー、要塞ホスト、ジャンプホストなどが含まれる場合があります。キーを使用するには、 Device 引数リストに適切な引数を含める必要があります。

Junos PyEZは、SSHキーエージェントにアクティブにロードされるSSHキー、デフォルトの場所またはユーザー定義の場所のいずれかで生成されたキー、パスワード保護を使用または放棄するキーを利用できます。 Device 引数がパスワードを指定していないか、SSH キーファイルを参照していない場合、Junos PyEZ はまず SSH キーエージェントでアクティブにロードされている SSH キーをチェックし、次にデフォルトの場所にある SSH キーをチェックします。コンソールサーバーに接続する場合、SSHキーはパスワードで保護する必要があります。

以下のセクションでは、SSHキーの生成、リモートデバイス上のキーの設定、およびキーを使用した管理対象デバイスへの接続の手順について説明します。

SSHキーの生成と設定

構成管理サーバーでSSHキーを生成し、リモートデバイスで公開キーを構成するには:

  1. サーバー上で、必要なユーザーのパブリックとプライベートSSHキーペアを生成し、必要なオプションを指定します。次に例を示します。
  2. (オプション)ネイティブSSHキーエージェントにキーをロードします。
  3. Junos PyEZ アプリケーションが接続する各デバイス(Junos デバイス、コンソール サーバー、要塞またはジャンプホストなど)で、適切なユーザー アカウントで公開キーを設定します。
    • Junosデバイスで公開キーを設定するには、ファイルからキーを読み込む方法があります。

    • サーバーまたはジャンプホストで公開キーを設定するには、 ssh-copy コマンドを使用できます。

  4. キーを使用してデバイスにログインし、キーが機能することを確認します。

Junos PyEZアプリケーションでのSSHキーの参照

SSHキーペアを生成し、リモートデバイスで公開キーを設定すると、Junos PyEZアプリケーションはそのキーを使用してデバイスに接続できます。キーを使用するには、 Device コンストラクターに適切な引数を含めます。 Device 引数は、以下によって決定されます。

  • キーの場所

  • キーがssh-agentなどのSSHキーエージェントにアクティブにロードされているかどうか

  • キーがパスワードで保護されているかどうか

  • ユーザーのSSH設定ファイルでそのホストの設定がすでに定義されているかどうか

以下のセクションでは、さまざまなシナリオの概要を説明します。

アクティブにロードされたキーでSSHキーエージェントを使用する

SSHキーエージェントまたは認証エージェントを使用してプライベートキーを安全に保存し、パスワードで保護されたキーのパスフレーズを繰り返し再入力する必要がなくなります。Junos PyEZクライアントは、SSHエージェントにアクティブにロードされているSSHキーを使用してデバイスに接続できます。デフォルトでは、 Device 引数がパスワードを指定していない場合、またはSSHキーファイルを参照していない場合、Junos PyEZはまずSSHキーエージェントでアクティブにロードされているSSHキーをチェックし、次にデフォルトの場所にあるSSHキーをチェックします。SSHキーファイルは、引数リストで明示的に設定するか、SSH設定ファイルの設定を通じて設定 Device できます。

ネイティブSSHキーエージェントにアクティブにロードされているSSHキーを使用してデバイスに接続するには:

  • Junosデバイスに直接接続するには、 Device 引数リストに必要なホスト名またはIPアドレスのみを指定する必要があります。

  • 要塞またはジャンプホストを介してJunosデバイスに接続するには、 host をJunosデバイスのホスト名またはIPアドレスに設定し、ジャンプホストを介した接続を定義する proxy_command 引数を含めます。

Device コンストラクターは allow_agent 引数もサポートしており、SSH キー エージェントを使用するタイミングをより細かく制御できます。表1に設定の概要を示します。

表1:Device allow_agent引数
allow_agent値 行動

None(デフォルト)

SSH接続は、 Device 引数がパスワードを指定していないか、プライベートキーファイルを参照していない場合にのみ(引数として明示的に、またはSSH設定ファイルを介して)、SSHエージェントのキーを使用します。

True

SSH接続は、SSHエージェントにロードされたキーを使用します。

False

SSH接続は、SSHエージェントからのキーを使用しません。

例えば、SSHキーエージェントでホストのSSHキーを読み込むとします。さらに、SSH設定ファイルには、そのホストのプライベートキーファイルで IdentityFile オプションを定義するホストエントリが含まれています。Junos PyEZアプリケーションでは、 Device のインスタンスを作成し、 host 引数のみを定義します。デフォルトでは、 Device は IdentityFileで定義されたプライベートキーファイルを使用します。 Device 引数はプライベートキーファイルを参照しているため、Junos PyEZはSSHキーエージェントをチェックしません。プライベートキーファイルにパスフレーズがある場合、パスワードが指定されていないため接続に失敗します。したがって、SSHエージェントを使用し、SSH設定ファイルに IdentityFile オプションを保持するには、 allow_agent=Trueを設定します。

パスワード保護なしでSSHキーを使用する

Junos PyEZでは、パスワード保護されていないSSHプライベートキーを使用して、クライアントがJunosデバイスに直接接続できます。ただし、空のパスフレーズでSSHプライベートキーを使用することはお勧めしません。Junos PyEZは、空のパスフレーズでSSHプライベートキーを使用したコンソールサーバーへの接続をサポートしていません。

デフォルトの場所にあり、パスワード保護されていないSSHキーを使用してJunosデバイスに接続するには、次の手順に従います。

  • Device引数リストでは、必要なホスト名またはIPアドレスのみを指定する必要があります。

    Junos PyEZは、まずアクティブなSSHキーエージェントにロードされているSSHキーを確認し、次にデフォルトの場所にあるSSHキーをチェックします。

デフォルトの場所になく、パスワード保護されていないSSHキーを使用してJunosデバイスに接続するには、次の手順に従います。

  • Device引数リストで、ssh_private_key_file引数をSSHプライベートキーのパスに設定します。

    注:

    ユーザーのSSH設定ファイルで、特定のホストのローカルSSHプライベートキーファイルパスがすでに指定されている場合は、Device引数リストでssh_private_key_file引数を省略できます。ssh_private_key_file引数を含めると、ユーザーのSSH設定ファイルでホストに定義されている既存のIdentityFile値が上書きされます。

パスワードで保護されたSSHキーを使用する

Junos PyEZ クライアントは、パスワードで保護された SSH キーを使用して、Junos デバイスに直接接続するか、要塞ホストまたはジャンプ ホストを介して Junos デバイスに接続するか、デバイスに接続されたコンソール サーバーに接続できます。以下のセクションでは、パスワードで保護されたSSHキーの Device 引数を明示的に定義する方法について説明します。代わりに、アクティブなSSHキーエージェントにロードされたパスワードで保護されたキーを使用するには、「 アクティブにロードされたキーでSSHキーエージェントを使用する」を参照してください。

Junosデバイスに直接接続する

パスワードで保護されたSSHキーを使用してJunosデバイスに直接接続するには、次の手順に従います。

  1. SSHプライベートキーパスワードの入力を求め、その値を変数に格納するコードを含めます。

  2. Device引数リスト内:

    • SSHキーファイルのパスフレーズを含む変数を参照するように passwd 引数を設定します。

    • キーがデフォルトの場所になく、SSH設定ファイルでプライベートキーファイルのパスが定義されていない場合は、 ssh_private_key_file 引数をプライベートキーのパスに設定します。

ジャンプホストを介して接続する

両方のデバイスに対してパスワードで保護されたSSHキーを使用して、要塞またはジャンプホストを介してJunosデバイスに接続するには:

  1. ネットワークデバイスのSSHプライベートキーパスワードの入力を求め、その値を変数に格納するコードを含めます。

  2. Device引数リスト内:

    • host引数をJunosデバイスのホスト名またはIPアドレスに設定します。

    • passwd引数を設定して、JunosデバイスのSSHキーファイルパスフレーズを含む変数を参照します。

    • キーがデフォルトの場所になく、SSH設定ファイルでプライベートキーファイルのパスが定義されていない場合は、 ssh_private_key_file 引数をJunosデバイスのプライベートキーのパスに設定します。

    • proxy_command引数を含め、必要に応じて、ユーザーとIDファイルを含むジャンプホストの接続を定義します。

スクリプトを実行すると、スクリプトはプライベートキーのパスフレーズの入力を求めます。

コンソールサーバーを介して接続する

パスワードで保護されたSSHキーファイルを使用するコンソールサーバーを介してJunosデバイスに接続するには、次の手順に従います。

  1. Junosデバイスのログイン資格情報の入力を求め、各値を変数に格納するコードを含めます。

  2. コンソールサーバーのユーザー名と秘密キーパスワードの入力を求め、各値を変数に格納するコードを含めます。

  3. Device引数リスト内:

    • host引数をコンソールサーバーのホスト名またはIPアドレスに設定します。

    • user引数とpasswd引数を、Junos OSログイン資格情報を含む変数に設定します。

    • cs_user引数を、コンソールサーバーのユーザー名を含む変数に設定します。

    • cs_passwd引数を、SSHキーファイルのパスフレーズを含む変数に設定します。

    • キーがデフォルトの場所になく、SSH設定ファイルでプライベートキーファイルのパスがまだ定義されていない場合は、 ssh_private_key_file 引数をプライベートキーのパスに設定します。

    • port引数を、コンソールサーバー上のTTYデバイスにマッピングするTCPポートに設定します。