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-config
や show 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の種別は
rsa
とec
(ECDSA) の候補がありますが、広く利用されているrsa
でRSA Key Pairを作成します。 -
rsa
のmodulus
は最も強度が高い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 PortとSwitch Portの種別があります。また、Switch PortにはAccess PortとTrunk 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-vrf
や Mgmt-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