🌐

Cisco IOS XEデバイスにSSHで管理アクセスするための設定要素の整理

に公開

Cisco IOS XEデバイスにおけるSSH Serverの各設定要素を整理しました。

すでに多くの設定例などがあると思いますが、本記事では深堀に重点を置きました。

対象機種

IOS XEデバイスは多くの種類があるため、主に下記の機種に絞って検証しております。

  • Catalyst 8000V (Cisco Modeling Labs版) v17.15.1a

  • Catalyst 9800-CL (vSphere版) v17.15.3a

SSH Serverの設定の流れ

作業フローを掲載します。


作業フロー

作業ステップの分岐がありますが、対象機器での利用機能に合わせて決まる点と、既存機器の運用に合わせる観点があるため、多くの場合は設定方法が自ずと決まってきます。判断の観点は各ステップで記載します。

Step 1. SSH Host Keyの生成 (crypto key generate コマンド)

SSH Host Keyを生成するために crypto key generate コマンドを実行します。


SSH Host KeyとFingerprint

SSH Host Keyは nvram:private-config に保存される都合で、show running-configshow startup-config では表示されません。アクセス保護された nvram:private-config の領域に保存されます。
表現を変えると、SSH Host Keyはデバイス固有の情報であるべきなため、コンフィグ上には表示されないようになっているとも言えます。


SSH Host Keyの保存先

しかしながら、筐体障害での機器交換後に、同じSSH Host Keyを引き続き利用したユース ケースも想定されます。具体的なシナリオ例としては、SSH経由での自動化を行っており、機器交換に伴うFingerprintの不一致によるエラーを避けたいケースです。その場合は、秘密鍵のバックアップを取れるように crypto key generate コマンドに exportable のキーワードを付けます。秘密鍵の取り扱いは慎重にすべきなため、本記事ではバックアップ不可の手順にしています。

また crypto key generate コマンドはバックグラウンド処理される都合上、実際にSSH Host Keyが生成されるまでラグがあります。


crypto key generate コマンドのバックグラウンド処理

crypto key generate コマンドのLabel名

crypto key generate コマンドにはLabel名の概念があり、Labelの指定の有無で挙動が異なります。
一般的には「Label名の省略」の手順が広く知れ渡っています。

crypto key generate コマンドでLabel名が省略される場合は、「ホスト名」と「ドメイン名」の事前設定が必要です。

表現を変えると、「ホスト名」と「ドメイン名」を元にLabel名が決定されるため、事前に定義が必要になるわけです。


crypto key generate コマンドとLabel名

補足ですが、ホスト名とドメイン名を変更してもLabel名は追随します。それ故に CSCwh45389 のようなIssueが存在します。

CSCwh45389: C9800: Key manager crash after hostname change with usage keys
https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwh45389


ホスト名とドメイン名の変更時のLabel名 (Key name)の追随

本記事ではIOS XEのアーキテクチャの理解度を増すために意図的に複数の設定方法を紹介していますが、特に理由が無ければ広く知れ渡っている「Label名の省略」で設定した方が「関係者での認識齟齬が生まれにくい」と想定されます。

crypto key generate コマンドの実行モード

補足ですが、crypto key generate コマンドは特権モード# プロンプトで実行します。

グローバル コンフィギュレーション モードである (config)# のプロンプトでも実行できますが、推奨もサポートもされておらず、将来的に削除される旨の警告メッセージが表示されます。

警告メッセージの例: %PARSER-5-HIDDEN: Warning!!! ' crypto key generate rsa modulus 4096' is a hidden command. Use of this command is not recommended/supported and will be removed in future.


(config)# で crypto key generate コマンドを実行した際の警告表示

SSH Host Keyの設定方針

本記事でのSSH Host Keyの設定方針を整理します。

  • SSH Host Keyの種別は rsaec (ECDSA) の候補がありますが、広く利用されている rsa でRSA Key Pairを作成します。

  • rsamodulus は最も強度が高い 4096 (最大値)を指定します。

  • 秘密鍵はバックアップ不可にします。exportable のキーワードは付与せずに無しにしています。

Step 1-a. Label名の省略


現在の作業: Step 1-a

一般的に広く知れ渡っている「Label名の省略」での設定方法です。特に理由がなければ、本手順で設定します。

下記のパラメータで設定しています。環境に応じて書き換えてください。

設定項目 設定例
hostname ios-xe
ip domain name lab.test
enable

configure terminal

hostname ios-xe

ip domain name lab.test

end

crypto key generate rsa modulus 4096

Step 1-b. Label名の明示的な指定


現在の作業: Step 1-b

Label名を省略せずに、明示的に指定する手順です。

Label名を指定する場合では、ホスト名とドメイン名の事前設定は不要となるものの、ip ssh rsa keypair-name コマンドでLabel名の明示的な指定が必要になります。


SSH Host KeyのLabel名 (Key name)を明示化する設定パターン

下記のパラメータで設定しています。環境に応じて書き換えてください。

設定項目 設定例
label SSH_KEY
enable

crypto key generate rsa modulus 4096 label SSH_KEY

configure terminal

ip ssh rsa keypair-name SSH_KEY

end

show ip ssh

Step 2. ログイン情報の設定


現在の作業: Step 2

ログイン情報は機器内部 (ローカル)に保持する方式で設定します。(RADIUSやTACACS+を利用せず、機器単体で完結する方式です。)

本例では特権ユーザーと一般ユーザーを作成します。なお、一般ユーザーのログイン後に enable コマンドで特権モードへの昇格も可能です。
他の設定にも依存しますが、権限レベルとして privilege 15 を指定すると、SSH接続時に特権モードで直接的にログインできます。

項目 ユーザー名 パスワード (シークレット)
enable secret - ENABLE_SECRET
特権ユーザー admin ADMIN_SECRET
一般ユーザー operator OPERATOR_SECRET
configure terminal

enable secret ENABLE_SECRET

username admin privilege 15 secret ADMIN_SECRET

username operator secret OPERATOR_SECRET

Step 3. VTYと認証の設定

SSHのセッションはVTY (Virtual Teletype)と呼ばれる仮想端末の回線番号に紐付けられ、line vty <Line-Number>の設定が適用されます。VTYの回線が全て埋まってしまうと、新規でのセッションの確立ができなくなります。


SSHとVTY

RouterやSwitchであれば、従来のIOS系から事前定義されている回線番号 0 から 15 番までを設定します。(VTYの回線番号によって設定が変わらないように統一します。)

SSHの設定過程で、Telnetによる接続を受け入れてしまわないように、transport input コマンドにて明示的にSSHのプロトコルのみを受け入れます。


TelnetとSSHのプロトコルの受け入れ制御

認証方式は代表的な下記の2通りの設定方法を紹介します。

  • login local コマンドによる認証方式

  • aaa new-model コマンドによる認証方式 (AAA, Triple AAA)

基本的には aaa new-model コマンドの利用有無によって設定方法が変わります。

具体的にはSwitchでのIEEE 802.1Xや、無線LANでのEAP-TLSやCentral Web Authで認証を行っていると、RADIUSやTACACS+の設定が必要になり、aaa new-model コマンドによる認証方式となります。

そのため、RADIUSやTACACS+に代表されるAAA関連の機能要件をまず確認します。また既存機器の運用方法に統一するか否かで決める方法があります。特に指定がない場合は login local コマンドによる認証方式がシンプルで分かりやすいため運用しやすいと想定されます。


どの認証方式を利用すべきかの判断基準の一例

注意点として、構築途中で認証方式が変わるシナリオも想定されます。

初期のキッティングでエージング試験などのために、取り急ぎSSHできる環境を構築していて。基本設計や詳細設計が終わった段階で、具体的な実装を開始していくと、認証方式が変わるケースが想定されます。

具体例として無線LANコントローラーであるCatalyst 9800が関わるものを紹介します。初期セットアップ直後では aaa new-model コマンドを利用せずに設定していたものの、認証要件に対応するため、EAP-TLSやCentral Web Auth (CWA)のためのRADIUSやTACACS+を設定する過程で、結果的に aaa new-model コマンドが有効になるシナリオが想定されます。Web UIで操作している場合は気づきにくいため、留意が必要です。

Step 3-a. login local 方式 (aaa new-model なし)


現在の作業: Step 3-a

login local コマンドを指定して、機器内部 (local)のユーザー情報 (username コマンド)を参照させます。


login local 方式 (aaa new-model なし)

line vty 0 15
 login local
 transport input ssh

Step 3-b. aaa new-model 方式 (AAA)


現在の作業: Step 3-b

aaa new-model コマンドを有効化する場合は、line vty から参照されるAAA Method List (aaa authentication およびに aaa authorization コマンド)の定義が必要になります。

AAA Method Listでは機器内部 (local)のユーザー情報 (username コマンド)を参照させます。


aaa new-model 方式 (AAA)

aaa new-model

aaa authentication login default local
aaa authorization exec default local

line vty 0 15
 login authentication default
 authorization exec default
 transport input ssh

aaa authorization exec default local がない場合は、privilege 15 の特権ユーザーでも権限が参照されず、 > プロンプトでのログインになります。line vty の中の privilege level 1 (デフォルト設定)の方が参照されるためです。


「aaa authorization exec default local」の有無によるログイン時の違い

NETCONFの接続にも aaa authorization exec default local のコマンドが必要です。

Prime Infrastructure (PI)やCatalyst Center (旧DNA Center)と連携しているCatalyst 9800にて、RADIUS設定後に aaa new-model が有効化されて、NETCONFへの接続ができなくなり、同期に失敗するシナリオがあります。


構築途中で認証方式が変わるシナリオ

Prime Infrastructureのドキュメントに関連記述があります。英語と日本語翻訳のドキュメントより該当記述を引用します。

Manage Catalyst 9800 Wireless Controller Series with Prime Infrastructure with SNMP V2 and V3 and NetCONF - Cisco
https://www.cisco.com/c/en/us/support/docs/wireless/catalyst-9800-series-wireless-controllers/214286-managing-catalyst-9800-wireless-controll.html

Caution: If aaa new-model is enabled on C9800, then you also need to configure:
(config)#aaa authorization exec default <local or radius/tacacs group>
(config)#aaa authentication login default <local or radius/tacacs group>
Netconf on C9800 uses the default method (and you cannot change this) for both aaa authentication login as well as aaa authorization exec. In case you want to define a different method for SSH connections, you can do so under the line vty command line. Netconf keeps using the default methods.

SNMP V2、V3、およびNetCONFを使用したPrime InfrastructureによるCatalyst 9800ワイヤレスコントローラシリーズの管理 - Cisco
https://www.cisco.com/c/ja_jp/support/docs/wireless/catalyst-9800-series-wireless-controllers/214286-managing-catalyst-9800-wireless-controll.html

注意: aaa new-modelがC9800で有効になっている場合は、次の項目も設定する必要があります。
(config)#aaa authorization exec default <localまたはradius/tacacs group>
(config)#aaa authentication login default <localまたはradius/tacacs group>
C9800のNetconfは、aaa authentication loginとaaa authorization execの両方にデフォルト方式を使用します(この方式は変更できません)。SSH接続に別の方式を定義する場合は、「line vty」コマンドラインで定義できます。Netconfはデフォルトの方法を使用し続けます。

Step 4. 管理系Interfaceの設定


現在の作業: Step 4

SSHによるリモートからの接続性を確保するのは、機器の初期セットアップ時が多く、必然的に管理系Interfaceの設定も一緒に行う機会が多くなると想定されます。

昨今ではコロナ禍を経てリモートワークも増えてきており、実際の機器を現物で見なくても、ラボや本番導入機器にSSHで繋いでセットアップする機会が増えてきたと思います。そうなると、他者へ依頼する場合などに、「管理系Interface」が具体的にどのInterfaceであるかの認識合わせが必要になるケースがあります。

Cisco IOS XEデバイスであれば、管理専用Interfaceを搭載する機種もあれば、しない機種もあります。それを意識していないと、管理専用Interfaceを持たない機種に「管理系Interfaceを管理系ネットワークに接続」のような誤った依頼を行ってしまう可能性があります。


管理系Interfaceを意識する必要性

機種の種別

Router, L3 Switch, L2 Switch, 無線LANコントローラーなどの機器の種別によって、搭載されているInterfaceの種別が異なります。

Interfaceの種別

大別するとInterfaceにはRouted PortSwitch Portの種別があります。また、Switch PortにはAccess PortTrunk Portがある点と、管理系アクセスをするためにはSVI (Switch Virtual Interface)の設定の考慮まで必要になります。

ひとつのRouterの筐体内であっても、WAN側がRouted Portで、LAN側がSwitch Portのケースもあるので留意が必要です。

L3 SwitchではSwitch Portに対して no switchport を設定してRouted Portに変更できますが、Routerの一部のモデルでもFlex Portと呼ばれる機能で変更が可能です。

管理系の対象Interface

管理専用のInterfaceを搭載している昨今の機種では、GigabitEthernet0 が管理専用として使われているケースがよく見られます(従来の古いモデルでは FastEthernet0 の場合もあります)。

一方で、そういったInterfaceを搭載していない機種もあるため、セットアップ時には機器にどのようなInterfaceが搭載されているかを事前に把握しておく必要があります。

管理専用Interfaceがない場合は、必要に応じて管理向けのVRFをユーザー自らで定義して、Routed PortやSVIに割り当てる方法もあります。

VRF (Virtual Routing and Forwarding)の有無

専用の管理系Interfaceがある場合は、一般的にはデフォルトでVRFが定義されており、管理系InterfaceにVRFが適用されております。

なお、VRF名に関しては Mgmt-vrfMgmt-intfのように機種によって異なります。

VRFをユーザー自ら定義して管理系Interfaceとして適用するケースにて、Ciscoの機器で一般的に採用されているVRF名を調べた際に、人によって辿り着く答えが変わる可能性があるため留意が必要です。


ユーザー定義による「管理用途向けのVRF」の命名

管理系Interface (管理系アクセス)の俯瞰図

考慮点を一枚絵にまとめたものを掲載します。


管理系Interface (管理系アクセス)

イメージ図では複数のパターンが意図的に一枚に収まるように表現しておりますが、機種や設計によってコンフィグの書き方が異なる可能性がある点を伝えたい次第です。

またSSHの設定はWeb上で多く出回っており、IOS XEデバイスであれば、RouterやSwitchの機種を問わずにコンフィグを使い回しやすい背景がありますが、IPアドレスに代表される固有情報の書き換えは忘れないように留意が必要です。

関連ドキュメント

IOS XEのSSH (Secure Shell)に関わるドキュメントのリンクをまとめています。

  • バージョンに依存するものは、Extended-Support (延長サポート)の v17.15.x をベースにして英語ドキュメントのリンクを掲載しています。(執筆時点の2025年06月時点において、v17.15.xは最新の延長サポートです。)

  • 日本語翻訳があるのものはバージョンを問わずにリンクを掲載しております。

IOS XE Router向け

Security and VPN Configuration Guide, Cisco IOS XE 17.x - Chapter: Secure Shell Version 2 Support
https://www.cisco.com/c/en/us/td/docs/routers/ios/config/17-x/sec-vpn/b-security-vpn/m_sec-secure-shell-v2-0.html

Cisco IOS XE 17.x セキュリティおよび VPN 設定ガイド - セキュア シェル バージョン 2 サポート [Cisco IOS XE 17] - Cisco
https://www.cisco.com/c/ja_jp/td/docs/routers/ios/config/17-x/sec-vpn/b-security-vpn/m_sec-secure-shell-v2-0.html

Catalyst 9200 (Switch)向け

Catalyst 9200は「Security Configuration Guide」の該当バージョンを選び、「Configuring Secure Shell」の章を確認します。

Cisco Catalyst 9200 Series Switches - Configuration Guides - Cisco
https://www.cisco.com/c/en/us/support/switches/catalyst-9200-r-series-switches/products-installation-and-configuration-guides-list.html

Configuring Secure Shell」の章のリンクを掲載します。

Security Configuration Guide, Cisco IOS XE 17.15.x (Catalyst 9200 Switches) - Configuring Secure Shell [Cisco Catalyst 9200 Series Switches] - Cisco
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9200/software/release/17-15/configuration_guide/sec/b_1715_sec_9200_cg/configuring_secure_shell__ssh_.html

Cisco IOS XE Amsterdam 17.2.x(Catalyst 9200 スイッチ)セキュリティ コンフィギュレーション ガイド - セキュア シェル バージョン 2 サポート [サポート] - Cisco
https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9200/software/release/17-2/configuration_guide/sec/b_172_sec_9200_cg/configuring_secure_shell_version_2_support.html

Catalyst 9300 (Switch)向け

Catalyst 9300は「Security Configuration Guide」の該当バージョンを選び、「Configuring Secure Shell」の章を確認します。

Cisco Catalyst 9300 Series Switches - Configuration Guides - Cisco
https://www.cisco.com/c/en/us/support/switches/catalyst-9300-series-switches/products-installation-and-configuration-guides-list.html

Configuring Secure Shell」の章のリンクを掲載します。

Security Configuration Guide, Cisco IOS XE 17.15.x (Catalyst 9300 Switches) - Configuring Secure Shell [Cisco Catalyst 9300 Series Switches] - Cisco
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/17-15/configuration_guide/sec/b_1715_sec_9300_cg/configuring_secure_shell__ssh_.html

Cisco IOS XE Bengaluru 17.6.x(Catalyst 9300 スイッチ)セキュリティ コンフィギュレーション ガイド - セキュア シェルの設定 [サポート] - Cisco
https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9300/software/release/17-6/configuration_guide/sec/b_176_sec_9300_cg/configuring_secure_shell__ssh_.html

Catalyst 9500 (Switch)向け

Catalyst 9300は「Security Configuration Guide」の該当バージョンを選び、「Configuring Secure Shell」の章を確認します。

Cisco Catalyst 9500 Series Switches - Configuration Guides - Cisco
https://www.cisco.com/c/en/us/support/switches/catalyst-9500-series-switches/products-installation-and-configuration-guides-list.html

Configuring Secure Shell」の章のリンクを掲載します。

Security Configuration Guide, Cisco IOS XE 17.15.x (Catalyst 9500 Switches) - Configuring Secure Shell [Cisco Catalyst 9500 Series Switches] - Cisco
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9500/software/release/17-15/configuration_guide/sec/b_1715_sec_9500_cg/configuring_secure_shell__ssh_.html

Cisco IOS XE Everest 16.6.x(Catalyst 9500 スイッチ)セキュリティ コンフィギュレーション ガイド - セキュア シェル(SSH)の設定 [サポート] - Cisco
https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst9500/software/release/16-6/configuration_guide/sec/b_166_sec_9500_cg/b_166_sec_9500_cg_chapter_0111.html

Catalyst 9800 (無線LANコントローラー)向け

Catalyst 9800は「Wireless Controller Software Configuration Guide」の該当バージョンを選び、「Configuring Secure Shell」の章を確認します。

Cisco Catalyst 9800 Series Wireless Controllers - Configuration Guides - Cisco
https://www.cisco.com/c/en/us/support/wireless/catalyst-9800-series-wireless-controllers/products-installation-and-configuration-guides-list.html

Configuring Secure Shell」の章のリンクを掲載します。

Cisco Catalyst 9800 Series Wireless Controller Software Configuration Guide, Cisco IOS XE 17.15.x - Configuring Secure Shell [Cisco Catalyst 9800 Series Wireless Controllers] - Cisco
https://www.cisco.com/c/en/us/td/docs/wireless/controller/9800/17-15/config-guide/b_wl_17_15_cg/m_config_secure_shell_ewlc.html

Cisco Catalyst 9800 シリーズ ワイヤレス コントローラ(Cisco IOS XE Gibraltar 16.12.x)ソフトウェア コンフィギュレーション ガイド - セキュア シェルの設定 [Cisco Catalyst 9800 シリーズ ワイヤレス コントローラ] - Cisco
https://www.cisco.com/c/ja_jp/td/docs/wireless/controller/9800/16-12/config-guide/b_wl_16_12_cg/b_wl_16_12_cg_chapter_01001101.html

株式会社プログデンス
設定によりコメント欄が無効化されています