NETCONFセッションのSSH接続を確立する
NETCONFセッションのSSH接続を確立する
SSH プロトコルを使用して、 構成管理サーバーと Junos デバイス間の接続を確立できます。Junos デバイスをリモートで設定するには、構成管理サーバーを使用します。
次のオプションを使用して、構成管理サーバーと Junos デバイス間の SSH 接続を確立できます。
-
SSH—構成管理サーバーは、JunosデバイスとのSSHセッションを開始します。
-
送信 SSH - このオプションは、ネットワークの制限 (ファイアウォールなど) のために構成管理サーバーが SSH 接続を開始できない場合に使用します。この状況では、Junosデバイスを設定して、定義済みの構成管理サーバーのセットとのSSH接続を開始、確立、維持します。
NETCONF セッションの SSH 接続を確立するための前提条件
構成管理サーバーが Junos デバイスとの SSH 接続を確立する前に、次のセクションで説明されている要件を満たす必要があります。
- 構成管理サーバーに SSH ソフトウェアをインストールする
- SSH経由のNETCONFサービスを有効にする
- Junosデバイス上のクライアントアプリケーションのユーザーアカウントを設定する
- Junos OS ユーザー アカウントの公開キーと秘密キーのペアまたはパスワードを構成する
- クライアントアプリケーションでのキーまたはパスワードへのアクセス
構成管理サーバーに SSH ソフトウェアをインストールする
構成管理サーバーは、Junos デバイスとの SSH 接続を処理します。したがって、SSH ソフトウェアは構成管理サーバーにローカルにインストールする必要があります。SSH ソフトウェアの取得とインストールについては、「 http://www.ssh.com と http://www.openssh.com」を参照してください。
SSH経由のNETCONFサービスを有効にする
JunosデバイスでNETCONFセッションを確立するには、NETCONFサービスを有効にする必要があります。以下のポートでNETCONFセッションを受け入れるようにNETCONFサーバーを設定できます。
-
デフォルトのNETCONFポート(830)またはユーザー定義ポート
-
デフォルトのSSHポート(22)
デバイスがNETCONFトラフィックを簡単に識別してフィルタリングできるため、デフォルトのNETCONFポートの使用をお勧めします。または、デフォルトのNETCONFポートではなく、特定のポートでNETCONFセッションを受け入れるようにデバイスを設定することもできます。定義されたポートは、NETCONF-over-SSHセッションのみを受け入れ、通常のSSHセッションリクエストを拒否します。サーバで SSH サービスも有効にした場合、デバイスはデフォルトの SSH ポートと設定された NETCONF ポート(デフォルトまたはユーザ定義ポート)の両方で NETCONF セッションを受け入れます。セキュリティを強化するために、情報を利用する UI_LOGIN_EVENT
イベントポリシーを設定し、デフォルトポートを効果的に無効にしたり、ポートでのNETCONFサーバアクセスをさらに制限したりできます。
JunosデバイスでSSH経由のNETCONFサービスを有効にするには、次の手順に従います。
-
デフォルトのNETCONFポート(830)またはユーザー定義のポートでNETCONFサービスを有効にします。
-
デフォルトのNETCONFポート(830)を使用するには、 階層レベルで ステートメントを含め
netconf ssh
ます[edit system services]
。[edit system services] user@host# set netconf ssh
-
特定のポートを使用するには、[] 階層レベルで目的のポート番号を持つ ステートメントを構成します
port
edit system services netconf ssh
。[edit system services] user@host# set netconf ssh port port-number
の範囲は
port-number
1 から 65535 です。設定されたポートは、NETCONF-over-SSHセッションのみを受け入れ、通常のSSHセッション要求を拒否します。メモ:NETCONF-over-SSHセッションは1〜65535の任意のポートで設定できますが、通常は別のサービスに割り当てられているポートでアクセスを設定することは避けてください。これにより、潜在的なリソースの競合が回避されます。FTP などの別のサービスに割り当てられたポートを設定し、そのサービスが有効になっている場合、 は
commit check
リソースの競合を明らかにしたり、その旨の警告メッセージを出したりしません。
-
-
(オプション)また、デフォルトのSSHポート(22)を使用してNETCONF SSHサブシステムにアクセスできるようにするには、 階層レベルに ステートメントを含め
ssh
ます[edit system services]
。[edit system services] user@host# set ssh
この設定により、すべてのユーザーとアプリケーションがデバイスへのSSHアクセスを可能にします。
メモ:デフォルトの動作でルートユーザによるSSHサービスの使用を制限するリリースでは、階層レベルで ステートメント
[edit system services ssh]
を設定してroot-login allow
、ルートユーザがSSH経由でNETCONFセッションを開くことができるようにする必要があります。 (オプション)応答しないNETCONFクライアントを切断するようにデバイスを設定します。
クライアントからデータが受信されなかった場合、sshd プロセスが応答を要求するまでのタイムアウト間隔 (秒単位) を指定します。さらに、切断をトリガーする、見逃されたクライアントアライブ応答のしきい値を指定します。
[edit system services] user@host# set netconf ssh client-alive-interval 10 user@host# set netconf ssh client-alive-count-max 10
メモ:階層レベルで設定されたステートメントは、デフォルトポート(830)または同じ階層レベルで設定された
[edit system services netconf ssh]
ユーザー定義ポートを介して接続するNETCONFセッションにのみ適用されます。-
設定をコミットします。
[edit] user@host# commit
-
クライアント アプリケーションが NETCONF セッションを確立する Junos OS を実行している各デバイスで、上記の手順を繰り返します。
Junosデバイス上のクライアントアプリケーションのユーザーアカウントを設定する
設定管理サーバーは、NETCONF セッションを確立するために Junos デバイスにログインする必要があります。そのため、設定管理サーバーは、NETCONF セッションを確立する各デバイスにユーザー アカウントを必要とします。次の手順では、Junosデバイスでローカルユーザーアカウントを作成する方法について説明します。または、このセクションをスキップして、RADIUSまたはTACACS+による認証を有効にすることもできます。
ローカルユーザーアカウントを作成するには:
Junos OS ユーザー アカウントの公開キーと秘密キーのペアまたはパスワードを構成する
設定管理サーバーは、NETCONFサーバーで認証する前に、SSH公開鍵と秘密鍵のペア、テキストベースのパスワード、またはその両方を必要とします。アカウントがSSH経由でNETCONFサーバに接続するためだけに使用される場合は、公開鍵と秘密鍵のペアで十分です。アカウントが他の方法(コンソールへのログインなど)でデバイスにアクセスするためにも使用される場合、テキストベースのパスワードが必要です。このパスワードは、キーベースの認証が設定されているが失敗した場合にも使用されます(SSHサーバーからパスワードの入力を求められます)。
RADIUSまたはTACACS+による認証を有効にすることを選択した場合は、このセクションをスキップできます。
テキストベースのパスワードを作成するには:
SSH公開/秘密キーのペアを作成するには、次の手順を実行します。
クライアント・アプリケーションを実行する構成管理サーバーで、標準コマンド・シェルでコマンド
ssh-keygen
を発行し、適切な引数を指定します。% ssh-keygen options
オプションの詳細については
ssh-keygen
、コマンドssh-keygen
のマニュアルページを参照してください。公開キーをJunos OSログインアカウントに関連付けます。
[edit system login user username authentication] user@host# set load-key-file URL
Junos OSは、指定されたファイルの内容をJunos OSを実行しているデバイスにコピーします。 URL は、1 つ以上の公開キーを含むファイルへのパスです。デフォルトでは、
ssh-keygen
コマンドは各公開鍵をユーザーのホームディレクトリの .ssh サブディレクトリにあるファイルに保存します。ファイル名はエンコーディングとSSHのバージョンによって異なります。URL の指定については、 CLIユーザーガイドを参照してください。メモ:または、 階層レベルで ステートメント
[edit system login user account-name authentication]
を含めるssh-rsa
こともできます。ただし、コマンド ラインで公開キーを入力したり、カット アンド ペーストしたりする必要がなくなるため、 ステートメントを使用することをお勧めしますload-key-file
。設定をコミットします。
[edit] user@host# commit
ステップ 2 とステップ 3 を、クライアント アプリケーションが NETCONF セッションを確立する各 Junos デバイスで繰り返します。
クライアントアプリケーションでのキーまたはパスワードへのアクセス
クライアントアプリケーションは、設定された公開/秘密鍵またはパスワードにアクセスでき、NETCONFサーバが要求したときに提供できる必要があります。
アプリケーションがキーまたはパスワードにアクセスできるようにするには、いくつかの方法があります。
公開鍵/秘密鍵が使用されている場合、ssh-agentプログラムはクライアントアプリケーションが動作するデバイス上で実行され、秘密鍵を処理します。
ユーザーがアプリケーションを起動すると、アプリケーションはユーザーにパスワードの入力を求め、安全な方法で一時的に保存します。
パスワードは、暗号化された形式で安全なローカル ディスクの場所またはセキュリティで保護されたデータベースに格納されます。
NETCONFセッション用のアウトバウンドSSH接続を確立するための前提条件
設定管理サーバーが NETCONF サーバーへのアウトバウンド SSH 接続を確立できるようにするには、次のセクションで説明されている要件を満たす必要があります。
- クライアントへのSSHソフトウェアのインストール
- SSH経由のNETCONFサービスを有効にする
- アウトバウンド SSH 用の Junos デバイスの設定
- クライアントでアウトバウンド SSH 開始シーケンスを受信して管理する
クライアントへのSSHソフトウェアのインストール
デバイスが構成管理サーバーへの SSH 接続を確立すると、構成管理サーバーが SSH セッションを制御します。したがって、SSH クライアント ソフトウェアは、構成管理サーバーにローカルにインストールする必要があります。SSH ソフトウェアの取得とインストールについては、「 http://www.ssh.com/ と http://www.openssh.com/ 」を参照してください。
SSH経由のNETCONFサービスを有効にする
JunosデバイスでNETCONFセッションを確立するには、NETCONFサービスを有効にする必要があります。以下のポートでNETCONFセッションを受け入れるようにNETCONFサーバーを設定できます。
-
デフォルトのNETCONFポート(830)またはユーザー定義ポート
-
デフォルトのSSHポート(22)
デバイスがNETCONFトラフィックを簡単に識別してフィルタリングできるため、デフォルトのNETCONFポートの使用をお勧めします。または、デフォルトのNETCONFポートではなく、特定のポートでNETCONFセッションを受け入れるようにデバイスを設定することもできます。定義されたポートは、NETCONF-over-SSHセッションのみを受け入れ、通常のSSHセッションリクエストを拒否します。サーバで SSH サービスも有効にした場合、デバイスはデフォルトの SSH ポートと設定された NETCONF ポート(デフォルトまたはユーザ定義ポート)の両方で NETCONF セッションを受け入れます。セキュリティを強化するために、情報を利用する UI_LOGIN_EVENT
イベントポリシーを設定し、デフォルトポートを効果的に無効にしたり、ポートでのNETCONFサーバアクセスをさらに制限したりできます。
JunosデバイスでSSH経由のNETCONFサービスを有効にするには、次の手順に従います。
-
デフォルトのNETCONFポート(830)またはユーザー定義のポートでNETCONFサービスを有効にします。
-
デフォルトのNETCONFポート(830)を使用するには、 階層レベルで ステートメントを含め
netconf ssh
ます[edit system services]
。[edit system services] user@host# set netconf ssh
-
特定のポートを使用するには、[] 階層レベルで目的のポート番号を持つ ステートメントを構成します
port
edit system services netconf ssh
。[edit system services] user@host# set netconf ssh port port-number
の範囲は
port-number
1 から 65535 です。設定されたポートは、NETCONF-over-SSHセッションのみを受け入れ、通常のSSHセッション要求を拒否します。メモ:NETCONF-over-SSHセッションは1〜65535の任意のポートで設定できますが、通常は別のサービスに割り当てられているポートでアクセスを設定することは避けてください。これにより、潜在的なリソースの競合が回避されます。FTP などの別のサービスに割り当てられたポートを設定し、そのサービスが有効になっている場合、 は
commit check
リソースの競合を明らかにしたり、その旨の警告メッセージを出したりしません。
-
-
(オプション)また、デフォルトのSSHポート(22)を使用してNETCONF SSHサブシステムにアクセスできるようにするには、 階層レベルに ステートメントを含め
ssh
ます[edit system services]
。[edit system services] user@host# set ssh
この設定により、すべてのユーザーとアプリケーションがデバイスへのSSHアクセスを可能にします。
メモ:デフォルトの動作でルートユーザによるSSHサービスの使用を制限するリリースでは、階層レベルで ステートメント
[edit system services ssh]
を設定してroot-login allow
、ルートユーザがSSH経由でNETCONFセッションを開くことができるようにする必要があります。 (オプション)応答しないNETCONFクライアントを切断するようにデバイスを設定します。
クライアントからデータが受信されなかった場合、sshd プロセスが応答を要求するまでのタイムアウト間隔 (秒単位) を指定します。さらに、切断をトリガーする、見逃されたクライアントアライブ応答のしきい値を指定します。
[edit system services] user@host# set netconf ssh client-alive-interval 10 user@host# set netconf ssh client-alive-count-max 10
メモ:階層レベルで設定されたステートメントは、デフォルトポート(830)または同じ階層レベルで設定された
[edit system services netconf ssh]
ユーザー定義ポートを介して接続するNETCONFセッションにのみ適用されます。-
設定をコミットします。
[edit] user@host# commit
-
クライアント アプリケーションが NETCONF セッションを確立する Junos OS を実行している各デバイスで、上記の手順を繰り返します。
アウトバウンド SSH 用の Junos デバイスの設定
アウトバウンド SSH 用に Junos デバイスを設定するには、次の手順に従います。
クライアントでアウトバウンド SSH 開始シーケンスを受信して管理する
アウトバウンド SSH 用に構成されている場合、Junos デバイスは構成管理サーバーとの常時接続を維持しようとします。アウトバウンド SSH セッションが確立されない場合、デバイスは、デバイスの構成管理サーバーリストにリストされている構成管理サーバーにアウトバウンド SSH 開始シーケンスを送信します。デバイスとの接続を確立する前に、各構成管理サーバーは、この開始シーケンスを受信し、デバイスとの TCP 接続を確立し、デバイス ID をデバイスに送信するように設定する必要があります。
開始シーケンスは、選択したJunos OSサーバーの公開鍵の処理方法に応じて、2つの形式のいずれかになります。
公開キーが構成管理サーバーに手動でインストールされる場合、開始シーケンスは次の形式になります。
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: <device-id>\r\n
初期化シーケンス中に公開キーがデバイスによって構成管理サーバーに転送される場合、シーケンスは次の形式になります。
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: : <device-id>\r\n HOST-KEY: <pub-host-key>\r\n HMAC: <HMAC(pub-SSH-host-key,<secret>)>\r\n
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。